Skip to content

Installing Diablo III in Wine

3 June 2012

 

Fab explains how to install and run Diablo III under Wine in Linux

Diablo III runs almost perfectly in Wine under Linux. The problem is that as of Wine 1.5.5, neither the game’s launcher nor the installer work. This means that if you already have an installed version of the game, maybe obtained by copying it over from a Windows installation, you can run it directly with wine Diablo\ III.exe -launch. Otherwise, however, you are out of luck with stock Wine and need to compile it yourself with a few specific patches. Luckily, if you are running Ubuntu (or an Ubuntu-based distribution like Linux Mint), there is a PPA that already includes a patched version of Wine that you can install. The PPA installs Wine 1.5.3 but that should be fine. By the time the next Wine version or two roll around, these patches should have hit the regular version anyway which will mean Diablo III support in vanilla Wine.

This tutorial will explain how to install Wine from the PPA in Linux Mint 13 (and by extension other distributions based on Ubuntu 12.04) and how to configure it to install and run Diablo III. Additionally, I will show how to compile Wine with the needed patches in case you are running another flavour of Linux or can’t use the PPA for other reasons. The installation of the actual game is explained for the retail DVD version. If you are using a digitally purchased version, your mileage may vary.

Installing Wine from the PPA

The first thing we need to do is add this PPA to our system. The only file it includes is the patched wine package that makes the launcher and installer work. The following command will permanently add the PPA to our repositories and install the accompanying encryption key:

sudo add-apt-repository "deb http://ppa.launchpad.net/cheako/packages4diabloiii/ubuntu precise main"

Now we will refresh our package information and install the wine package. Since we have added the PPA, we will automatically install Wine from there. Execute the following command to do this:

sudo apt-get update && sudo apt-get install wine

Installing Diablo III

We are now ready to install Diablo III using our patched version of Wine. It turns out, however, that in order to install from the game DVD, we need to mount it with a special parameter. Otherwise, the installer will not be able to find some files and will refuse to install the game. First of all, please create the D3C1.0.0 directory in /media like this:

sudo mkdir /media/D3C1.0.0

Next, mount the DVD with this command (assuming your system’s CD/DVD drive is /dev/sr0):

sudo mount -o unhide /dev/sr0 /media/D3C1.0.0

We can now finally start the Diablo III install:

wine /media/D3C1.0.0/Diablo\ III\ Setup.exe

Since this is a fresh instance of Wine, we are most likely missing some of the Gecko packages which Wine needs in order to show HTML content. This is needed in almost all game installers and launchers and Diablo III is no an exception. When Wine asks you to install these Gecko components, please click “Install”.

The next thing you should see is the game’s installer and a big button labelled “INSTALL”. Click the button. From now on, the setup should run just like it does natively under Windows. You might as well make yourself a pot of coffee now as this will take a while. Or you could just sit there and read the backstory while looking at the pretty pictures. I went for the coffee option, myself. After the install has finished, you should see an option to launch the game. The installer should now close and the main game launch screen will come up.

Running Diablo III

The game is now installed and everything should work. Chances are, however, that you will not be able to log into Battle.net and thus you will be unable to play the game. If you try to log in, authentication of your credentials will always fail with “Error 3007″. This is due to security policies in newer versions of the Linux kernel. To fix this, quit the game and issue the following command:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

You will have to do this after every system restart, prior to playing the game. Therefore, you might as well include it in a startup script for the game, if you use such things. Restart the game, log into Battle.net and you will finally be ready to play.

After playing for a few hours, I can indeed confirm that the game runs perfectly in Linux. Just like WoW, I actually have a feeling that it runs slightly better (once you manage to set it up, of course) due to the lower resource usage of the underlying system. In any case, it is very playable and worth a purchase to run it exclusively in Linux, I think.

Patching Wine yourself

In case you aren’t running on a distribution compatible with the PPA we used so far, you will need to patch and compile Wine for yourself. This is a lot less scary than it sounds, trust me. The first thing you need to patch Wine is Git. if you haven’t installed it yet — and you should, it is the best version control system ever invented by man — you can do so by issuing sudo apt-get install git in a terminal.

Please note: Since I am on a 64-bit system, I had to do all of these steps in a 32-bit Ubuntu VM. If you use a 64-bit version of Mint or Ubuntu, you might have to do the same. See the explanation under “Compiling Wine”.

Now download the Wine source code from their repository (have some patience, Wine is a big project and this will take a while):

git clone http://source.winehq.org/git/wine.git wine-git

You will now need to download four patches. Stick them into your newly created wine-git directory. These patches are:

  1. server: Move completion from async object to async queue
  2. server: Update stored completion information even after an async IO is queued (try 3)
  3. server: STATUS_MORE_PROCESSING_REQUIRED does not indicate that an async operation is complete (try 3)
  4. ws2_32: Use STATUS_MORE_PROCESSING_REQUIRED to indicate that the AcceptEx async is incomplete (try 3, resend)

Thanks to Erich E. Hoover for doing all of the actual heavy lifting in writing these. If you have downloaded the patches to the right directory, we can take advantage of his hard work and patch the Wine source:

patch -p1 < 86603
patch -p1 < 86604
patch -p1 < 86605
patch -p1 < 86606

That’s it. We now have the source code in place.

Compiling Wine

In order to compile your patched version of Wine, make sure that you have the necessary packages installed to compile software and everything you need to get Wine assembled correctly. On Ubuntu and Mint, installing the following should do the trick:

sudo apt-get install build-essential checkinstall flex bison xorg-dev libgl1-mesa-dev libpng12-dev libjpeg-dev libssl-dev libpulse-dev libglu1-mesa-dev libhal-dev libtiff4-dev libncurses5-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libmpg123

If you are using another distribution, please consult their documentation on how to get the necessary packages set up. This tutorial might be useful if you are on Gentoo.

In my case, since I am on a 64-bit system and Wine is essentially a 32-bit program, I could not find an easy way to actually compile Wine on my machine. What I did was set up a 32-bit installation of Ubuntu 12.04 in a VirtualBox VM and compiled there. This is far from ideal but sadly the only working solution I could find. I basically did everything in the VM and then copied over the result to my native machine. You can of course do the same thing on another 32-bit box, if you happen to have one. To compile in a way that makes it easy to copy the result, tell the configure script where you want the compile to happen (I’ve chosen a sub-folder of my home directory) and then copy that directory over to your native machine:

./configure --prefix=/home/fabsh/wine-git-install

If you are on a 32-bit machine, just ignore this and simply run ./configure as usual. After that, you are ready to start compiling in earnest.  If you haven’t gotten any fatal errors during the configure part, everything should be smooth sailing from here on out. You better get some Jaffa Cakes and lots of coffee, though. This is going to take ages (especially in a VM). Wine is a pretty big piece of code. Just  make sure you execute these commands one after the other and otherwise relax and watch the Matrix fly by:

make depend
make
sudo make install

After all of that, you should be ready to install and play Diablo III (see above). If you are running another distribution, things might need a bit of tweaking and you will have to find the development libraries needed yourself, as their names will most likely be slightly different. If you have tips in that regard, or if you run into trouble, let me know in the comments. I will update this article with any useful information that I’ll come across or if the patches to support this game reach the Wine mainline.

Further reading:

 

Update — 7 June 2012

It looks like Patch 1.0.2b (released on 6 June) breaks the ability to join games (even local ones) for Wine users. You can fix this by prepending the following before starting your game: setarch i386 -3

You can do this either in the .desktop file you start Diablo III with or directly from the command line. I now start the game from the command line like this:

setarch i386 -3 wine ~/.wine/dosdevices/c\:/Program\ Files\ \(x86\)/Diablo\ III/Diablo\ III\ Launcher.exe

For more information on this issue and other problems with running the game on Wine under Linux, see this thread on the Diablo III forum.

15 Comments

Post a comment
  1. June 20, 2012

    People report that Stock Wine has an issue switching video modes, though I’ve only seen the bug reports so it may only effect some users.

    I’m using a digitally purchased version, so I’m glad to know that the retail DVD version is also working. Any one using the digitally purchased version from http://www.battle.net, you shouldn’t need anything more then what’s here.

    All the necessary patches are in git now and the bugs have been closed. The next release of wine will make this/my PPA obsolete. When that happen I’ll take it down to prevent ppl from installing the old 1.5.3 and every one using the PPA with a PIN should get the new wine 5.5.6? When the time come I’ll test a few things to make sure it’ll go smoothly.

    Thank you for the plug, I’ve never been bloged before!

    Using “sudo add-apt-repository ppa:cheako/packages4diabloiii” will work on Ubuntu precise and quantal. Previous versions of Ubuntu are unsupported by this PPA. You can still build wine from source.

    These instructions skip over the part about apt-pinning as found on the PPA… Though I’m not a journalist, so I understand that what I wrote is illedgable.

    Put something like the following in /etc/apt/preferences

    Package: *
    Pin: release a=precise,n=precise,o=LP-PPA-cheako-packages4diabloiii
    Pin-Priority: 714

    Cheers!

  2. fabsh #
    June 20, 2012

    Hey, Mike! Thanks for the information and nice to hear from the person who made all of this possible. I will update this tutorial again when those patches have landed. Cool to see that it is going into stock Wine. :)

  3. rob #
    June 20, 2012

    After executing the line to begin installation, I’m receiving a Diablo III Setup error, “failed to extract required files from an archive. please try again.” Error code: BLZPTS00008

  4. fabsh #
    June 20, 2012

    Rob: Did you follow my instructions to mount the DVD?

  5. Kitsab #
    July 9, 2012

    Hi guys,

    there’s a workaround for doing “echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope” every time the machine is rebooted by a seperate script.

    The problem is “sudo tee” won’t work with the gui based gksudo in ubuntu.

    just put the “echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope” line into a script like workaround_bug_3007.sh and then create your Diablo3 launcher script like this:

    gksudo sh workaround_bug_3007.sh
    wine /your_command_to_launch_Diablo_III

    br

    Kitsab

  6. jackcy #
    July 10, 2012

    To evade executing the command
    “echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope”
    each time after a reboot I made an init conf. (ubuntu 12.04)

    /etc/init/diablo.conf

    Contents:

    start on local-filesystems
    stop on deconfiguring-networking
    script
    echo 0|tee /proc/sys/kernel/yama/ptrace_scope
    end script

    ————–regards

  7. Gary Masson #
    August 16, 2012

    Wow, this sir, is a fantastic post!!! I dabble in Ubuntu and recently tried 12.04, and I am very impressed with it!!

    I would like to give this a try but I am worried about people saying running Diablo under Wine is getting them banned. Are you guys running Diablo now for some time, under wine, without getting banned?

    I have read Blizzard is allowing us to do this, but the issue is clouded by people getting banned, but claiming to be doing nothing wrong.

    Thanks, I appreciate your feedback.

    Gary

  8. Mike Mestnik #
    September 8, 2012

    I’ve taken down the PPA, use this one now:
    https://launchpad.net/~ubuntu-wine/+archive/ppa

    I’d like to report, no I am reporting. That Diablo 3 works great now, after a new video card and an updated copy of wine from the winehq PPA. I don’t believe the grfx drivers were updated, but they might have been as I’m pulling from xorg-edgers. Thanks a bunch this rocks now.

  9. fabsh #
    September 8, 2012

    That is great news, Mike! I will test this as soon as I can.

  10. Ryan Smith #
    October 10, 2012

    Could you update the original article with the new address? I’ve been getting errors when I tried to download wine, among them

    W: Failed to fetch http://ppa.launchpad.net/cheako/packages4diabloiii/ubuntu/dists/precise/main/binary-i386/Packages 404 Not Found

    Thanks very much for doing this!

    – Ryan

  11. Joe #
    October 18, 2012

    Hi folks,

    Can anyone report the FPS numbers you’re getting running under this version of wine and which architectures/distributions on each case?

    Extremely low numbers for both 1.5.5 and 1.5.8 with around 15-30 FPS during gameplay.

    Regards

  12. October 26, 2012

    Thanks fab,

    but you could have had it more easy with PlayOnLinux :-P

    all patching, tweaking, and so on done for you ^^

    And you have your own prefix and don’t mess up other games

    Cheers
    xuedi

  13. fabsh #
    October 28, 2012

    I don’t think you need to patch at all with the latest Wine versions. I just haven’t had time to try it yet.

Trackbacks & Pingbacks

  1. Blizzard забанила пользователей Linux за игру в Diablo III через Wine - Технологии onliner.by
  2. Геймеры, запустившие Diablo 3 на Linux, были забанены Blizzard | Блог levelUP.by

Leave a Reply

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS