Skip to content

Build for W10 ARM32 / WinRT and ignore system settings for Proxy on Windows so it runs locally #173

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
gitnewcomer opened this issue Mar 27, 2025 · 10 comments

Comments

@gitnewcomer
Copy link

Hi, is there a way to build Webone for Windows ARM32 (https://xdaforums.com/t/tutorial-install-windows-10-for-arm32-on-your-surface-2.4044521/), so that we can use it on a Surface RT locally as a proxy to the old IE11/Edge legacy?

To make Webone work locally with IE/Edge, it would need a configuration to ignore the system settings for proxy, because with proxy enabled, it would go into a loop, Webone trying to access the internet through its own proxy... :)

It would be great if you could bring the old Surface RT back to life without relying on another machine for the Webone proxy!

Thanks!

@atauenis
Copy link
Owner

Hi.

is there a way to build Webone for Windows ARM32

Probably not. At least, I don't known any .NET 6/7/8 SDK (C# Compiler) for ARM32. Old versions of the .NET (3.1 and earlier) was able to produce some ARM32 EXEs, and even a some kind of .NET Core 3.1 Runtime exists on Microsoft website. Probably it should run on Win10 10.0.15035 or even on WinRT 8.1. But I have not tested ability to rebuild WebOne 0.17.x using old SDK and its compatibility with ARM Windows.

However this does not mean that there is no even theoretical possibility to build an working ARM32 executable. Officially .NET does not supporting Linux & ARMv6, but someone made an tweaked .NET 8.0 SDK (WebOne can be built using both 6 or 8 dotnets by choice, I'm currently stuck on 6.0 only because of Win7/8.1 support, but there are no problems to build via .NET SDK 8.0) which is producing "self-contained" binaries for Linux & ARMv6. I'm using that SDK in build-armv6.sh script to build .deb for Raspbian & RasPi 1B boards. That SDK have stripped non-Linux support AFAIR. But, may be an ARM32 & Windows version of it also can be made. I'm not a guru in DotNet self recompiling, so can't say how to patch it.

To make Webone work locally with IE/Edge, it would need a configuration to ignore the system settings for proxy, because with proxy enabled, it would go into a loop, Webone trying to access the internet through its own proxy... :)

Did you tried to uncomment UpperProxy=no in webone.conf? At least on x86/x64 systems it is working perfectly.

Image

Image

@gitnewcomer
Copy link
Author

Hi,
thanks for your quick reply. There is and SDK from .NET 6 for ARM32 available here https://files.open-rt.party/Software/Redistributables/SDK/

This server is hosted by some devs that still port some software to the Surface RT. If you want, you can join their Discord Server https://discord.gg/rZrmbDd9S6

One dev that already ported Webone once, was, I think, @wmjb but without the extra tool for image manipulation. Some tools already exists on the Open RT server, like ffmpeg https://files.open-rt.party/Software/ffmpeg2.1_ARM.zip

The settings "UpperProxy=no" I haven't tried, will try it ASAP.

Another question, will this help improve compatibility on Webone https://github.com/aFarkas/html5shiv ?

Thanks again for your time! :)

@atauenis
Copy link
Owner

There is and SDK from .NET 6 for ARM32 available here https://files.open-rt.party/Software/Redistributables/SDK/

This changes all. So, WebOne for ARM32 Windows is a possible thing. :)

In theory, WebOne can redirect even Windows Store apps traffic, so it may be used for reanimating something in Win8.x/RT8.x/10. Not tested at this moment, but it should be possible.

Another question, will this help improve compatibility on Webone https://github.com/aFarkas/html5shiv ?

Probably, yes. I'll test this. By its readme, seems that it enables some JS features from IE9/FF4 in IE6-8 and FF3, so this may be a bit useful thing.

@gitnewcomer
Copy link
Author

There is a Windows 10 ARM32 image for QEMU if you need it for testing (is a little slow, but works): https://files.open-rt.party/Miscellaneous/qemu-win10-15035-arm32.7z

I can also test it on a real Surface RT with Windows 10 ARM32... :)

@wmjb
Copy link

wmjb commented Mar 27, 2025

webone runs on arm32 windows

Image

@gitnewcomer
Copy link
Author

webone runs on arm32 windows

Image

Does it also uses the converter tool from Image Magick for images and ffmepg / yt-dlp for video?

Can you provide more infos of any changes you needed to do on source code and the compiled binaries? :)

@atauenis
Copy link
Owner

atauenis commented Mar 28, 2025

There is a Windows 10 ARM32 image for QEMU if you need it for testing (is a little slow, but works): https://files.open-rt.party/Miscellaneous/qemu-win10-15035-arm32.7z

Thank you.

The image seems to be need to be unpacked to C:\ root, so to run it in an other folder, I have just edited the bat file:

cd qemu-6.2.0-winrt-emu-v3\pc-bios
..\qemu-system-arm -M virt,highmem=false -cpu cortex-a15 -smp cores=1,threads=2 -accel tcg,thread=multi -m 4096 -bios QEMU_EFI.fd -drive id=mydrive,if=none,file=..\..\qemu-arm.vhd -device sd-card,drive=mydrive  -device VGA -device ich9-usb-ehci1 -device usb-kbd -device usb-tablet -rtc base="2017-02-11",clock=vm

And it's works (yes, really slow, but probably because my hardware is also a bit outdated).

webone runs on arm32 windows

Great. :) To made it don't require DOTNET_ROOT (and even separate Runtime), it is possible to build it with dotnet publish -c Release -r win-arm --self-contained true. The required runtime DLLs will be embedded into WebOne.exe (near 50 MB).

Does it also uses the converter tool from Image Magick for images and ffmepg / yt-dlp for video?

Yes, all WebOne versions are using convert.exe from ImageMagick and ffmpeg&yt-dlp exes. On Win32 they're running directly, and on Win64/WinARM64 via WOW. So, as WinARM32 does not have WOW for Win32 apps, it is need to compile these exes for ARM32 architecture.

Can you provide more infos of any changes you needed to do on source code and the compiled binaries? :)

Seems that it is running just like as on x86 (except absence of ImageMagick, so WebP pictures won't be displayed in apps without WebP support). No changes to WebOne sources are need.

Probably it is need to add some tweaks to webone.conf to change certificate date (SslCertVaildBeforeNow, set to 3650 days) and disable web site certificate validation (ValidateCertificates=no), as the virtual machine have 11/02/2017 system date. Then TLS connections through WebOne should work.

@gitnewcomer
Copy link
Author

gitnewcomer commented Mar 28, 2025

Yes, all WebOne versions are using convert.exe from ImageMagick and ffmpeg&yt-dlp exes. On Win32 they're running directly, and on Win64/WinARM64 via WOW. So, as WinARM32 does not have WOW for Win32 apps, it is need to compile these exes for ARM32 architecture.

Sorry for the confusion, I was asking @wmjb if he managed to port the "convert" tool from Image Magick, ffmpeg/yt-dlp and if he needed to change anything on the source code to compile it for ARM32... :)

Probably it is need to add some tweaks to webone.conf to change certificate date (SslCertVaildBeforeNow, set to 3650 days), as the virtual machine have 11/02/2017 system date. Then TLS connections through WebOne should work.

I don't know why the VM needs to start with this date (I think Windows 10 ARM32 has a time bomb, as it was an evaluation version). I can run Windows 10 ARM32 on my Surface RT with current date without problems. Maybe you can try to edit the batch file, remove the forced date and update the date on Windows 10 ARM32...

@gitnewcomer
Copy link
Author

Yes, all WebOne versions are using convert.exe from ImageMagick and ffmpeg&yt-dlp exes. On Win32 they're running directly, and on Win64/WinARM64 via WOW. So, as WinARM32 does not have WOW for Win32 apps, it is need to compile these exes for ARM32 architecture.

Did you managed to compile the tools for ARM32? :)

@atauenis
Copy link
Owner

atauenis commented Apr 7, 2025

No, I have not tried to build ImageMagick/FFmpeg/yt-dlp from sources at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants