Guide for BOX86 and BOX64 with wine on the Pocket Reform?

Is there a guide with the latest information how to install BOX86 and BOX64 on the Pocket Reform?
I tried the same procedure as on another arm-hf device for the i386 part, but wine would not run.
I followed the instructions here official documentation from the maintainer of BOX86/BOX64 but it still would not work.

What software are you trying to run? What error message do you get?

Iā€™m maintaining box64 in Debian, so you can just ā€œapt installā€ it but it seems you want to run a 32bit Windows application? Last time i did that (with Stardew Valley) I used 64bit wine with box64 to run 32bit StardewValley.exe The important part was to have all the shared libraries being installed in their 32bit variants, meaning both armhf as well as i386 packages via multiarch.

1 Like

I installed wine manually and symlinked the folders respectively.
Multiarch is enabled.
Currently while starting, wine does not find ntdll.dll and aborts the start.
It does not matter what I start (e.g. winecfg or just wine without a parameter), it does not work.
I installed BOX86 from the itai-nelken repository, which worked fine after also installing libc6:armhf and some other armhf libs.
BOX64 was in the Debian repo from where it got installed.
BOX64 starts and throws the same error when starting wine.
So the BOXes do not seem to be the problem :slight_smile:
And thank you for your continued support.

I have wine installed from the Debian repos and winecfg works fine:

Here is the full box64 start-up log:

Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Detected 48bits at least of address space
Counted 40 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for winecfg
Not an ELF file (sign=#!/b)
Error: Reading elf header of /usr/lib/wine/wineapploader, Try to launch natively instead
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32:i386"
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Wine64 detected, WINEPRELOADRESERVE=""
BOX64: Detected 48bits at least of address space
BOX64: Detected running wine with "winecfg.exe"
Counted 42 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for /usr/lib/wine/wine64
Apply RC params for wine64
Applying BOX64_MAXCPU=64
argv[1]="winecfg.exe"
Rename process to "wine64"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) libresolv.so.2
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Using emulated /usr/lib/wine/../x86_64-linux-gnu/wine/x86_64-unix/ntdll.so
Using emulated /lib/x86_64-linux-gnu/libunwind.so.8
Using native(wrapped) liblzma.so.5
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Wine64 detected, WINEPRELOADRESERVE=""
BOX64: Detected 48bits at least of address space
BOX64: Detected running wine with "winecfg.exe"
Counted 43 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for /usr/lib/wine/wine64
Apply RC params for wine64
Applying BOX64_MAXCPU=64
argv[1]="winecfg.exe"
Rename process to "wine64"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) libresolv.so.2
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Using emulated /usr/lib/wine/../x86_64-linux-gnu/wine/x86_64-unix/ntdll.so
Using emulated /lib/x86_64-linux-gnu/libunwind.so.8
Using native(wrapped) liblzma.so.5
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Detected 48bits at least of address space
Counted 43 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for /usr/lib/wine/wineserver64
argv[1]="-p0"
Rename process to "wineserver64"
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libdl.so.2
Using native(wrapped) libutil.so.1
Using native(wrapped) libresolv.so.2
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/libwine.so.1
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Wine64 detected, WINEPRELOADRESERVE="140000000-1400ab000"
BOX64: Detected 48bits at least of address space
BOX64: Detected running wine with "conhost.exe"
Counted 45 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for /usr/lib/wine/wine64
Apply RC params for wine64
Applying BOX64_MAXCPU=64
argv[1]="C:\windows\system32\conhost.exe"
argv[2]="--unix"
argv[3]="--width"
argv[4]="119"
argv[5]="--height"
argv[6]="47"
argv[7]="--server"
argv[8]="0x10"
Rename process to "wine64"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) libresolv.so.2
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Using emulated /usr/lib/wine/../x86_64-linux-gnu/wine/x86_64-unix/ntdll.so
Using emulated /lib/x86_64-linux-gnu/libunwind.so.8
Using native(wrapped) liblzma.so.5
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/libwine.so.1
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/win32u.so
Using native(wrapped) libm.so.6
Using native(wrapped) libfreetype.so.6
Using native(wrapped) libfontconfig.so.1
Using native(wrapped) libexpat.so.1
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/win32u.so
Using native(wrapped) libm.so.6
Using native(wrapped) libfreetype.so.6
Using native(wrapped) libfontconfig.so.1
Using native(wrapped) libexpat.so.1
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A53 Cortex-A73 with 6 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 80 entries
Box64 with Dynarec v0.3.0 nogit built on Jul  9 2024 21:50:17
BOX64: Wine64 detected, WINEPRELOADRESERVE="140000000-14015d000"
BOX64: Detected 48bits at least of address space
BOX64: Detected running wine with "winecfg.exe"
Counted 45 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/home/josch/.local/bin/:/usr/local/bin/:/usr/bin/:/bin/:/usr/local/games/:/usr/games/
Looking for /usr/lib/wine/wine64
Apply RC params for wine64
Applying BOX64_MAXCPU=64
argv[1]="C:\windows\system32\winecfg.exe"
Rename process to "wine64"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) libresolv.so.2
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Using emulated /usr/lib/wine/../x86_64-linux-gnu/wine/x86_64-unix/ntdll.so
Using emulated /lib/x86_64-linux-gnu/libunwind.so.8
Using native(wrapped) liblzma.so.5
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/libwine.so.1
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/win32u.so
Using native(wrapped) libm.so.6
Using native(wrapped) libfreetype.so.6
Using native(wrapped) libfontconfig.so.1
Using native(wrapped) libexpat.so.1
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/winex11.so
Using native(wrapped) libXext.so.6
Using native(wrapped) libX11.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libXinerama.so.1
Using native(wrapped) libXxf86vm.so.1
Using native(wrapped) libXrender.so.1
Using native(wrapped) libXrandr.so.2
Using native(wrapped) libXcomposite.so.1
Using native(wrapped) libXi.so.6
Using native(wrapped) libXcursor.so.1
Using native(wrapped) libXfixes.so.3
Using emulated /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/winspool.so
Using native(wrapped) libcups.so.2
1 Like

may I ask the question: what commands did you use to install this wine version? This seems to be a lot easier with much better results than my manual approach.

I just installed it using apt install wine:

josch@reform:~$ which winecfg
/usr/bin/winecfg
josch@reform:~$ realpath /usr/bin/winecfg
/usr/lib/wine/wineapploader
josch@reform:~$ dpkg-query --search /usr/lib/wine/wineapploader
wine: /usr/lib/wine/wineapploader
josch@reform:~$ apt-cache policy wine
wine:
  Installed: 8.0~repack-4
  Candidate: 8.0~repack-4
  Version table:
 *** 8.0~repack-4 500
        500 http://deb.debian.org/debian bookworm/main arm64 Packages
        500 http://deb.debian.org/debian bookworm/main armhf Packages
        500 http://deb.debian.org/debian bookworm/main i386 Packages
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status
1 Like

the installation finishes. this time it throws another error.
the installed version, as the pocket reform image uses trixie/sid, is 9.0~repack-4+b1
the error is:

wine: failed to open L"C:\windows\system32\wineboot.exe": c0000135
0024:err:environ:run_wineboot failed to start wineboot c0000135
wine: could not load kernel32.dll, status c0000135

I already deleted the old .wine folder, but the error persists.

Which wine packages do you have installed? What is the output of this command:

dpkg -l  | grep "9.0~repack-4"

Maybe it also helps to post a bit more of the console output?

$ dpkg -l | grep ā€œ9.0~repack-4ā€
ii fonts-wine 9.0~repack-4 all Windows API implementation - fonts
ii libwine:arm64 9.0~repack-4+b1 arm64 Windows API implementation - library
ii libwine:armhf 9.0~repack-4+b1 armhf Windows API implementation - library
ii wine 9.0~repack-4 all Windows API implementation - standard suite
ii wine32:armhf 9.0~repack-4+b1 armhf Windows API implementation - 32-bit binary loader
ii wine64 9.0~repack-4+b1 arm64 Windows API implementation - 64-bit binary loader

and the whole console output when trying to start wine applications

$ wine explorer
wine: created the configuration directory ā€˜/home/mike/.wineā€™ wine: failed to open L"C:\windows\system32\wineboot.exe": c0000135 0024:err:environ:run_wineboot failed to start wineboot c0000135 wine: could not load kernel32.dll, status c0000135

Your wine32 package is architecture armhf and your wine64 package is architecture arm64. With that setup you are trying to run Windows ARM executables. But thatā€™s probably not what you want? If you want to run x86 Window executables, then you need wine32 and wine64 from i386 and amd64 architectures, respectively.

1 Like

With this new installation method you described, this is correct, as you requested, that is simply use ā€œapt install wineā€, which installs this version. This is not the solution I search for but was a test, to see if this would work, and it also did not, even without the need for box86/64.
In my previous attempt I manually installed wine:i386 and wine:amd64 from wine-hq mirrors, which was also not working.
I now purged the arm-wines and installed wine32:i386 and wine64:amd64 but this fails with a lot of depency errors caused by the already installed box86.

edit: I did not intend to sound ungrateful, just trying to state the circumstances. I am quite glad and thankful that you are helping.

You are right, that was sloppy of me. Of course you have to tell apt, that you want wine from amd64 or i386.

Uh ohā€¦ Please just use external package repositories if you know what you are doing.

If you do not show error messages, Iā€™m afraid I cannot give you further input.

Solving this for you might be a bit tricky because you already installed stuff from all sorts of places that are not the Debian archive. It is entirely possible that the issues you see are because you installed something which interferes with the regular operation of your system. Finding out what that is might be tricky.

after removing all the i386 packages I got wine64 running fine. I can run all kinds of 64bit software, but syswow64 fails with some of the 32bit software that I want to run, so wine32 seems to be a must.

no packages except box86 were installed from other sources, as box86 apparently is not available in the debian repos. from where did you installed it on your device? it seems this might be the deciding factor now :slight_smile:
I will write down all the commands in this thread one all parts are running smoothly.

1 Like

You need box86 to run 32bit (i386) Linux applications on arm. You want to run 32bit x86 Windows applications. Since wine 9 you do this via its WoW64 support which allows 64bit (amd64) Linux wine to run 32bit x86 Windows applications. It is not box86 which runs the Windows application. You need box64 to run amd64 wine which in turn will run your 32bit windows executable. You only need box86 to run 32bit (i386) Linux software on arm or riscv.

yeah but syswow64 fails with one of my applications. and I guess that it is missing wine32, which I uninstalled to resolve the conflict.
So I will try to uninstall BOX86 and then install wine32:i386 and see if it works then.

Just to make sureā€¦ when you run your application, you do see a long log including a line like this near the top, right?

Because if your output does not look similar to what I pasted above, you are not running with box64 nor box86.

this appears, if the 32bit program is started via terminal.
the start fails with:

0118:err:environ:init_peb starting L"Z:\home\user\program\program.exe" in experimental wow64 mode
wine: failed to load L"??\C:\windows\syswow64\ntdll.dll" error c0000135

native 64bit-programs start without error

What is ā€œthe 32 bit programā€? Surely there is more output than the one you showed? If there is not, then box64/box86 doesnā€™t even start in the first place.

You probably also do not mean ā€œnative 64bit-programsā€ (which would mean arm64 programs) but you mean amd64 programs (but those are not native)?

It would really help if you start being more verbose, describe in more detail what exactly you are doing and what you see when you try it. I do not think that I can help you much like this.

As I tried to tell you before, 32bit program means a Windows 32bit executable (win32). 64bit programs in the context of this threat mean Windows 64bit executables.
If I execute a 64bit program, all works fine, no problem there. BOX64 starts, wine start, program starts.
If I execute a 32bit program, BOX64 starts normally, warns that there is no wine32, tries to use the experimental syswow64 mode and fails, with the aforementioned error.

It turns out, that debian does not build its wine with wow64 support enabled. Iā€™m currently building the debian package locally with --enable-archs=i386,x86_64 which should enable it. Lets seeā€¦