Guide to Install FFXI on Linux

Magiknight
Posts: 147
Joined: Tue Sep 04, 2012 12:42 am

Guide to Install FFXI on Linux

Post by Magiknight » Sun Nov 27, 2016 1:12 pm

It took me a looong time to get FFXI working on Linux. In the end I got it working by NOT doing what the majority of the three different guides I found instructed. They are needlessly complicated. SO I'm going to outline what I did to get FFXI running on my Manjaro Linux KDE set up. Installing it is really easy actually. Of course, each system is different and this may or may not work for yours.

1. Install the latest version of Wine. I'm using 1.9.23. DONT use PlanOnLinux or Winetricks.
2. Download "FFXI with everything" at http://nasomi.com/download.php
3. Run 64bit POL.exe
4. Open ffxisetup.exe and install FFXI and all of the expansions. Don't install POL. The program may freeze after it installs each expansion. If that happens, just close it and relaunch ffxisetup.exe. The program should indicate the previous expansion you installed is installed and prompt you to install the remaining expansions.
5. Open the update files folder, and select all the files and copy them
6. Paste all of those files into /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/FINAL FANTASY XI/ and overwrite all of the duplicates
5. Run POL.exe. It should be on your menu or located at /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/PlayOnlineViewer/
6. POL will prompt you to update POL. Do it.
7. After POL updates and restarts select existing user. Use ABCD1234, or whatever, as your POL ID and make up a username.
8. On the left side click "Check Files" and CHANGE THE DROPDOWN to read FINAL FANTASY XI.
9. Click "Check Now", this process can take 10-60 minutes. Eventually it will come up with "Repair". Select that. This can take a few hours.
10. Copy the "data" folder located at /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/PlayOnlineViewer/
11. Paste the data folder into /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/FINAL FANTASY XI/
12. Download imm32.dll.so file at: https://github.com/bluffnix/ffxi-wine/b ... m32.dll.so
13. Move imm32.dll.so to /usr/lib32/wine/. Overwrite the file that's already there.
14. Download xiloader at http://cloudef.pw/armpit/xiloader.tar.xz
15. Move xiloader to /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/PlayOnlineViewer/ (may not be necessary but it's where I like to keep it)
16. Open a terminal at /.wine/drive_c/Program Files (x86)/PlayOnline/SquareEnix/PlayOnlineViewer/ and type "wine xiloader.exe --server [IP HERE]"
16. You should be prompted for a login.

Good luck! Let me know if I missed anything. If you need help creating a desktop icon that runs the terminal command let me know.

Totien
Posts: 21
Joined: Mon Jul 06, 2015 7:59 am

Re: Guide to Install FFXI on Linux

Post by Totien » Tue Apr 11, 2017 11:00 am

Hello Magiknight,

Thanks for posting this. I've been working off and on getting this to run for a few months now, and one of the things I've learned is that you can get around your bug in step 4 by running winecfg and choosing the 'Emulate a Virtual Desktop' option. The farthest I've gotten is that xiloader asks for login, succeeds and loads the game window, but I can't get past 'Acquiring Player Data' which eventually times out with POL error 3113.

I am using Linux Mint 18.1 and wine 1.8, though I've tried several guides using various versions of wine and I always get stuck at the same spot.

Other than the wine version, the differences between the steps I've taken and your guide are that I DID install POL whereas in step 4 you did not. Also, wine1.8 seems to contain imm32.dll.so, but it's in /usr/lib/x86_64-linux-gnu/wine perhaps because I'm running Mint. Here is my terminal output. I've Googled most of the fixme's but haven't found much help. Any advice you can offer would be greatly appreciated.

Code: Select all

wine xiloader --server 8.26.94.111

[04/11/17 09:46:24] ==========================================================
[04/11/17 09:46:24] DarkStar Boot Loader (c) 2015 DarkStar Team
[04/11/17 09:46:24] Bug Reports: https://github.com/DarkstarProject/darkstar/issues
[04/11/17 09:46:24] Git Repo   : https://github.com/DarkstarProject/darkstar
[04/11/17 09:46:24] ==========================================================
[04/11/17 09:46:25] Connected to server!
[04/11/17 09:46:25] Resolving host: john-PC
[04/11/17 09:46:25] ==========================================================
[04/11/17 09:46:25] What would you like to do?
[04/11/17 09:46:25]    1.) Login
[04/11/17 09:46:25]    2.) Create New Account
[04/11/17 09:46:25] ==========================================================

Enter a selection: 1

[04/11/17 09:46:28] Please enter your login information..
Username: totien
Password: *********

[04/11/17 09:46:34] Successfully logged in as totien!
[04/11/17 09:46:34] Connected to server!
[04/11/17 09:46:34] Resolving host: john-PC
[04/11/17 09:46:34] Sending account id..fixme:winsock:ws_sockaddr_ws2u Unknown address family 52428, return NULL.

[04/11/17 09:46:34] Server connection done; disconnecting!fixme:advapi:GetCurrentHwProfileA (0x32f66c) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f698) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f66c) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f698) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f66c) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f698) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f4) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:advapi:GetCurrentHwProfileA (0x32f4f0) semi-stub
fixme:win:EnumDisplayDevicesW ((null),0,0x32eb74,0x00000000), stub!
fixme:imm:ImmGetDescriptionW (0x4090409, (nil), 0): semi stub
fixme:imm:ImmGetDescriptionW (0x4090409, 0x2a537e0, 9): semi stub
fixme:imm:NotifyIME IMC_SETCANDIDATEPOS
fixme:imm:NotifyIME NI_SETCANDIDATE_PAGESIZE
fixme:imm:NotifyIME NI_SETCANDIDATE_PAGESTART
fixme:imm:ImmReleaseContext (0x20046, 0x2c62910): stub
fixme:imm:ImmGetOpenStatus (0x2c62910): semi-stub
fixme:reg:RegQueryInfoKeyW security argument not supported.
fixme:reg:RegQueryInfoKeyW security argument not supported.
fixme:reg:RegQueryInfoKeyW security argument not supported.
fixme:reg:RegQueryInfoKeyW security argument not supported.
fixme:reg:RegQueryInfoKeyW security argument not supported.

[04/11/17 09:46:35] Resolving host: john-PC
[04/11/17 09:46:38] Resolving host: ffxi00.pol.com
[04/11/17 09:46:38] Resolving host: 8.26.94.111
[04/11/17 09:46:38] Resolving host: pp000.pol.comfixme:d3d:wined3d_device_uninit_3d Something's still holding the implicit swapchain.
fixme:d3d:wined3d_device_decref Device released with resources still bound, acceptable but unexpected.
fixme:d3d:wined3d_device_decref Leftover resource 0x1e9c50 with type WINED3D_RTYPE_SURFACE (0x1).
fixme:d3d:wined3d_device_decref Leftover resource 0x1e9a98 with type WINED3D_RTYPE_TEXTURE (0x3).
fixme:d3d:wined3d_device_decref Leftover resource 0x1e9948 with type WINED3D_RTYPE_SURFACE (0x1).
fixme:d3d:wined3d_device_decref Leftover resource 0x1e9790 with type WINED3D_RTYPE_TEXTURE (0x3).
fixme:d3d:wined3d_device_decref Leftover resource 0x1e7ed0 with type WINED3D_RTYPE_SURFACE (0x1).
fixme:d3d:wined3d_device_decref Leftover resource 0x166b30 with type WINED3D_RTYPE_TEXTURE (0x3).
err:d3d:wined3d_device_decref Context array not freed!

[04/11/17 09:48:56] Closing...

Magiknight
Posts: 147
Joined: Tue Sep 04, 2012 12:42 am

Re: Guide to Install FFXI on Linux

Post by Magiknight » Tue Apr 11, 2017 6:51 pm

Hi Totein. Are you running 32bit or 64bit Mint?

Every version of wine that I've tried contains imm32.dll.so....but it doesn't work with FFXI. That's why you need the one I posted a link to. If I use wine's imm32.dll.so FFXI will load but it wont get me past the character selection screen. Something like that. I highly recommend trying the imm32.dll.so I posted a link to.

Also, you can try installing wine gecko and wine mono through Mints package manager. That's what I had to do for Chakra Linux that I run on my laptop. If you do install gecko and mono don't install the emulated versions in Wine.

Totien
Posts: 21
Joined: Mon Jul 06, 2015 7:59 am

Re: Guide to Install FFXI on Linux

Post by Totien » Wed Apr 12, 2017 10:14 am

Thanks for the quick reply. Where do you recommend I place imm32.dll.so? /usr/lib32/wine is not a directory that exists in my fs.

I tried installing gecko and mono, but I finally got the repos correct to get them with:

Code: Select all

sudo apt-get install wine-gecko2.21 wine-mono0.0.8
which didn't help. The custom xiloader in your link fatally crashed after I got it compiled so I went back to the version I had working.

You also mention not to use winetricks or playonlinux. How then do you get dotnet running, or do you even need to?

Sorry if my questions seem noobish. I've been a Linux professional for years, but don't have much experience with wine.

Magiknight
Posts: 147
Joined: Tue Sep 04, 2012 12:42 am

Re: Guide to Install FFXI on Linux

Post by Magiknight » Wed Apr 12, 2017 11:45 am

I don't know anything about Linux I just play around with things until something works!

What folders are in your /usr/ folder?

There are a lot of different xiloaders out there. There's a link to one on Nasomis website and one exclusively for Icons server if you plan on using that server. I'd download three different Xiloades and try them out.
I don't use dotnet.

If you're using 32bit mint make sure you install the 32 bit playonline viewer, otherwise you'll need the 64bit playonline viewer.

Totien
Posts: 21
Joined: Mon Jul 06, 2015 7:59 am

Re: Guide to Install FFXI on Linux

Post by Totien » Thu Apr 13, 2017 9:44 am

Magiknight wrote:What folders are in your /usr/ folder?

Code: Select all

johnsi@john-PC ~ $ ls /usr
bin  games  i686-w64-mingw32  include  lib  lib32  libx32  local  sbin  share  src  x86_64-w64-mingw32
johnsi@john-PC ~ $ ls /usr/lib32
crt1.o            libatomic.so.1       libcrypt.a        libieee.a                libm.so            libpthread.a            libstdc++.so.6
crti.o            libatomic.so.1.1.0   libcrypt.so       libitm.so.1              libnsl.a           libpthread_nonshared.a  libstdc++.so.6.0.21
crtn.o            libBrokenLocale.a    libc.so           libitm.so.1.0.0          libnsl.so          libpthread.so           libthread_db.so
gconv             libBrokenLocale.so   libdl.a           libm.a                   libnss_compat.so   libquadmath.so.0        libubsan.so.0
gcrt1.o           libc.a               libdl.so          libmcheck.a              libnss_dns.so      libquadmath.so.0.0.0    libubsan.so.0.0.0
libanl.a          libcidn.so           libg.a            libmpx.so.0              libnss_files.so    libresolv.a             libutil.a
libanl.so         libcilkrts.so.5      libgcc_s.so.1     libmpx.so.0.0.0          libnss_hesiod.so   libresolv.so            libutil.so
libasan.so.2      libcilkrts.so.5.0.0  libgomp.so.1      libmpxwrappers.so.0      libnss_nisplus.so  librt.a                 Mcrt1.o
libasan.so.2.0.0  libc_nonshared.a     libgomp.so.1.0.0  libmpxwrappers.so.0.0.0  libnss_nis.so      librt.so                Scrt1.o

Magiknight
Posts: 147
Joined: Tue Sep 04, 2012 12:42 am

Re: Guide to Install FFXI on Linux

Post by Magiknight » Thu Apr 13, 2017 2:26 pm

You should have a wine folder in your lib32 folder

Totien
Posts: 21
Joined: Mon Jul 06, 2015 7:59 am

Re: Guide to Install FFXI on Linux

Post by Totien » Fri Apr 14, 2017 10:20 am

Welp, I don't have one. I completely uninstalled wine 1.8 and successfully compiled 1.9.23 from source in an attempt to follow your guide directly. I then removed the install files I've been using and grabbed the ones from Nasomi's website.

I can install the 32bit POL via FFXISETUP.exe, but I get the following fatal error when I try to install 64bit. I've tried from Nasomi's torrent and the POL website:

Code: Select all

johnsi@john-PC ~/Downloads/FINAL FANTASY XI $ wine 64bit\ POL.exe 
wine: created the configuration directory '/home/johnsi/.wine'
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
fixme:urlmon:InternetBindInfo_GetBindString not supported string type 20
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
fixme:urlmon:InternetBindInfo_GetBindString not supported string type 20
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
err:secur32:SECUR32_initSchannelSP TLS library not found, SSL connections will fail
fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x6a0cb608, context 0x938708, init_notify 0, handle 0x116e794): stub
wine: configuration in '/home/johnsi/.wine' has been updated.
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:apphelp:ApphelpCheckInstallShieldPackage stub: 0x32b004 L"C:\\users\\johnsi\\Temp\\{E37EF14A-E920-438B-A7BF-DDE6183095BE}\\PlayOnline Viewer & Tetra Master.msi"
fixme:sfc:SRSetRestorePointA 0x6dcda8 0x6dce50
fixme:sfc:SRSetRestorePointA 0x6dcda8 0x6dce50
err:richedit:ReadStyleSheet skipping optional destination
err:ole:ClientRpcChannelBuffer_SendReceive called from wrong apartment, should have been 0x800000046
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4400-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4400-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4400-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4400-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4400-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
I think I need to recompile wine with --enable-win64, so I'm giving that a shot.

Totien
Posts: 21
Joined: Mon Jul 06, 2015 7:59 am

Re: Guide to Install FFXI on Linux

Post by Totien » Fri Apr 14, 2017 3:30 pm

Still nothing...

Code: Select all

johnsi@john-PC ~/Downloads/FINAL FANTASY XI $ wine 64bit\ POL.exe 
err:secur32:SECUR32_initSchannelSP TLS library not found, SSL connections will fail
fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x6a0cb608, context 0x938708, init_notify 0, handle 0x116e794): stub
wine: configuration in '/home/johnsi/.wine' has been updated.
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:apphelp:ApphelpCheckInstallShieldPackage stub: 0x32b004 L"C:\\users\\johnsi\\Temp\\{0381A71A-AED0-40BE-B5B7-C0FF040ACB14}\\PlayOnline Viewer & Tetra Master.msi"
fixme:sfc:SRSetRestorePointA 0x6dcda8 0x6dce50
fixme:sfc:SRSetRestorePointA 0x6dcda8 0x6dce50
err:richedit:ReadStyleSheet skipping optional destination
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4b00-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4b00-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4b00-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4b00-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-4b00-000008000000}
err:rpc:I_RpcReceive we got fault packet with status 0x80010108
johnsi@john-PC ~/Downloads/FINAL FANTASY XI $ sudo rm -rf ~/.wine/
[sudo] password for johnsi: 
johnsi@john-PC ~/Downloads/FINAL FANTASY XI $ export WINEARCH=win64
johnsi@john-PC ~/Downloads/FINAL FANTASY XI $ wine 64bit\ POL.exe 
wine: created the configuration directory '/home/johnsi/.wine'
wine: WINEARCH set to win64 but '/home/johnsi/.wine' is a 32-bit installation.
I'll have to resume this Monday. Any tips in the meantime would be greatly appreciated.

Magiknight
Posts: 147
Joined: Tue Sep 04, 2012 12:42 am

Re: Guide to Install FFXI on Linux

Post by Magiknight » Mon Apr 17, 2017 4:57 am

I'm no expert here but I'd make sure you're running a 64 bit OS with 64bit wine. The last line of your output "wine: WINEARCH set to win64 but '/home/johnsi/.wine' is a 32-bit installation." makes it seem like your OS or your versin of Wine is only 32bit compatible.

Post Reply