Skip to content
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

DietPi-Software | Box86 and Steam for armhf #3989

Merged
merged 59 commits into from
Feb 2, 2021
Merged

Conversation

ravenclaw900
Copy link
Collaborator

@ravenclaw900 ravenclaw900 commented Dec 21, 2020

Status: Ready

  • Get to work with Steam
  • Test Baba is You
  • Test Portal
  • Retest on a fresh installation

Reference: #3957

Commit list/description:

  • DietPi-Software | Begin to add Box86
  • DietPi-Software | Fix syntax
  • DietPi-Software | Change software ID to avoid conflict with Portainer
  • DietPi-Software | Fix Raspberry Pi detection
  • DietPi-Software | Add uninstall
  • DietPi-Software | Specify Raspberry Pi Models
  • DietPi-Software | Add make install
  • DietPi-Software | Add support for Steam on ARM
  • DietPi-Software | Fix Steam uninstall
  • DietPi-Software | Stop Steam from installing i386 packages on ARM
  • DietPi-Software | Fixes
  • DietPi-Software | Add warning about running x86 software on ARM
  • DietPi-Software | Add Steam desktop shortcut
  • DietPi-Software | Fixes
  • DietPi-Software | Exclude steamdeps from being updated
  • DietPi-Software | Remove steam desktop shortcut on uninstall

@ravenclaw900 ravenclaw900 changed the title Begin to add Box86 DietPi-Software | Box86 Dec 21, 2020
@MichaIng
Copy link
Owner

Remember that we have compiled packages available: https://dietpi.com/meveric/pool/main/b/
Since those are build in a generic way to work on all armhf SBCs, it's at least work testing and comparing the results with the freshly compiled binaries.

They depend on gl4es, as this at least makes sense for all graphical software, but that dependency could be removed. We could consider to add this APT repository, even that it is meant for Odroids in the first place, on Box64 installs to allow easy updating.

@ravenclaw900
Copy link
Collaborator Author

ravenclaw900 commented Dec 24, 2020

I can't really test it out, though, without the dependency being removed. My only ARM SBC is a Raspberry Pi, and libgl-odriod isn't in the Raspbian package repository.

@MichaIng
Copy link
Owner

MichaIng commented Dec 24, 2020

curl -sSLf https://dietpi.com/meveric/meveric.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/meveric.gpg --yes
echo -e 'deb https://dietpi.com/meveric/ all testing\ndeb https://dietpi.com/meveric/ buster main' > /etc/apt/sources.list.d/meveric.list
G_AGUP
apt install box86-odroid

Indeed the libgl-odroid dependency could cause an issue for other armhf SBCs as it ships libGL.so (GL => GLES wrapper, basically gl4es, if I'm not mistaken) which might not work on other boards or conflict with other implementations for those.

@ravenclaw900
Copy link
Collaborator Author

ravenclaw900 commented Dec 25, 2020

You can't easily install i386 software without the Debian repository. This could be a problem, as manually downloading the package from archive.debian.org is quite a hassle, and so is resolving dependencies (I couldn't even get GNU Hello to work without libc6).

@MichaIng
Copy link
Owner

Hmm, the Debian repository could be added of course, and dpkg --add-architecture i386 to allow installing from it, but that could easily break the system if a armhf library is replaced with an i386 one. I'm not sure how it's supposed to be used or usually used, but probably not to run i386 software from the Debian repository but binaries from other sources instead?

@ravenclaw900
Copy link
Collaborator Author

It is mainly used in Twister OS, and its main use cases there are running Steam (games) and Wine.

@MichaIng
Copy link
Owner

Okay, WINE is an own topic anyway, as there is no Windows software available in Linux repositories. Steam is available as i386 package only: https://packages.debian.org/buster/steam
Probably it is possible to allow foreign i386 architecture for that single package only, to that 🤔.

Just found an official DEB package: https://steamcdn-a.akamaihd.net/client/installer/steam.deb (from: https://store.steampowered.com/about/)
It installs an APT repository: https://repo.steampowered.com/steam/
Ah, that is for self-updates only, nothing else in it 😄.
Okay, if applying a foreign arch for a single package only does not work, probably for a single repository.
Would be great if we could make it available via Box86 on ARM boards.

@ravenclaw900
Copy link
Collaborator Author

ravenclaw900 commented Dec 27, 2020

I'm working with Steam (using the official package) right now. So far, it updates but doesn't actually show the main window at all. The good thing is, Box86 automatically detects it and runs it. Not sure if this works for all x86 software.

@Joulinar
Copy link
Collaborator

Joulinar commented Feb 1, 2021

for me Steam was crashing this afternoon. But I'm not sure at which stage. Atm Steam is not starting anymore. It's doing the update check but that is it...

@MichaIng
Copy link
Owner

MichaIng commented Feb 1, 2021

Have you selected to remember the password?

I updated the package with the mentioned last changes. Works now as good as it get's, indeed not fantastic, but I have hope that things get a bit more stable by times with Box86 updates.

@ravenclaw900
Copy link
Collaborator Author

If you run the steam command, you should get an error along the lines of:

(box86:8299): GLib-GObject-WARNING : 16:35:29.056: ../../../gobject/gsignal.c:1656: signal "device_added" already exists in the 'NMObject' class ancestry

(box86:8299): GLib-GObject-WARNING : 16:35:29.056: ../../../gobject/gsignal.c:1656: signal "device_removed" already exists in the 'NMObject' class ancestry

(box86:8299): GLib-GObject-WARNING : 16:35:29.056: ../../../gobject/gsignal.c:1656: signal "permission_changed" already exists in the 'NMObject' class ancestry

(box86:8299): GLib-GObject-CRITICAL : 16:35:29.057: g_object_new_is_valid_property: object class 'NMClient' has no property named 'dbus-connection'

@MichaIng
Copy link
Owner

MichaIng commented Feb 1, 2021

I saw this by times, but doesn't seem to break start? Can be muted via apt install libnm0.
It's the NetworkManager library, but since we don't use it, it shouldn't have an effect.

@ravenclaw900
Copy link
Collaborator Author

Whoops, I forgot to paste the end in. It's quite possible that that is not related whatsoever, it's just the last thing before a Segmentation Fault.

+ DietPi-Software | Steam: Remove ARM dependencies from install code since it is now added to the package itself
+ DietPi-Software | Steam: Remove leftover symlinks on uninstall
@MichaIng
Copy link
Owner

MichaIng commented Feb 1, 2021

What I didn't check is if adding libnm0 probably fixes remembered password? I was wondering since AFAIK it worked the last time I tested it where I'm not sure if I had that installed. But probably it's indeed unrelated. Strange is that those errors do not always show up.


From my end it's ready to be merged. If libnm0 does fix something, I can add it to the package dependencies.

@MichaIng MichaIng requested a review from Joulinar February 1, 2021 22:50
@MichaIng MichaIng linked an issue Feb 1, 2021 that may be closed by this pull request
@Joulinar
Copy link
Collaborator

Joulinar commented Feb 1, 2021

At least I'm able to start Steam client. Need to say, I never used it before. So not sure how to really start something 🙄

image

@MichaIng
Copy link
Owner

MichaIng commented Feb 1, 2021

Yes, I also didn't find a way to install games from the small mode. So this only works when one uses Steam on a different client already and has games in it's libraries, then they show up in the mini games list as well to be installed locally. Or @ravenclaw900 do you know a way to search and install new games with only small mode?

@ravenclaw900
Copy link
Collaborator Author

The best way I can think of is to get the games from https://store.steampowered.com instead. They should then show up grayed-out in the menu, and you can double-click (or right click and select Install Game) to install them.

@MichaIng
Copy link
Owner

MichaIng commented Feb 1, 2021

Another good info for the docs 👍.

@Joulinar
Copy link
Collaborator

Joulinar commented Feb 1, 2021

I tried to add anything from the web site but somehow it did not show up on the client

EDIT: one more thing I noticed. If I close the client, from inside the menu, I'm not able to start the client again

@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

EDIT: one more thing I noticed. If I close the client, from inside the menu, I'm not able to start the client again

Same here. It is not really stopping, but hanging (can be seen in htop). It needs to be killed (the steam.sh wrapper script), then it can be started again. When stopping it from the panel icon, it works.


Known issues:

  • Only small mode supported
  • Hence no possibility to search/add games from the client, which needs to be done from the website store or a different client
  • When choosing to remember the login password, subsequent client starts fail
  • Stopping the client via small mode menu does not really stop it

@MichaIng MichaIng changed the title DietPi-Software | Box86 DietPi-Software | Box86 and Steam for armhf Feb 2, 2021
@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

Another issue:

  • I added "Wizards" to my games list.
  • On a fresh x86 install, I can double-click it to have it downloaded and started.
  • On RPi I could do the same, until the window that informs me that it's now downloaded in the background. It then shows to be installed immediately, but there was nothing actually downloaded. Double-clicking the game in the list prompts an error that the executable is missing, and of course it is, nothing has been downloaded.

Also, as well on x86, the "Play Game" button at the website does not work when used on the same system where our Steam is installed. I reverted the desktop entry to take URLs, but that does not work. I'm not sure how the handler for steam:// URLs is supposed to work or implemented for Linux clients. I'll try it with the official package as well, just to rule out an issue with either the Debian package or the fact that the Bullseye package is installed on Buster.

And how do I actually "add" a game from the website? I only see the "Play Game" button, which does not work, but no button to add it to the own list (whichlist does not work), at least not for free games.

Exiting Steam via menu btw works on x86, so that is an ARM-only issue, or probably it just takes very long? The panel icon should disappear once Steam has fully exited.

@Joulinar
Copy link
Collaborator

Joulinar commented Feb 2, 2021

for me these are the 2 main challenges. Not able to start/download games without having the client installed somewhere else. And the client not being able to close correctly.

@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

Autologin (remember password) btw works fine on x86 without libnm0, that that is not related. A previous issue of Steam on x86 where sound in games did not work btw also does not exist anymore. At least on my VM, sound plays fine. In some cases it might be necessary to enable the ALSA software conversion plugin (possible now via dietpi-config Audio Options), if the sound sources are not in a format that is natively supported by the sound driver/card.

Not able to start/download games without having the client installed somewhere else.

Yes, currently it's the same for me. I'll see if that works with the official launcher.

@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

The official steam launcher package is really not great. Since it is not marked as i386 package, but as "all", it pull in all dependencies as amd64 packages on x86_64 systems, while i386 variants would be required. So the latter need to be installed manually (at least some, until the dedicated dependency strict can be launched to check and install more i386 packages, which takes very long and is done on every Steam start) while the prior are obsolete. Probably doubled obsolete packages could be avoided by installing the i386 ones manually first, but maintaining such a dependency list is a nightmare as well. We did the right decision to use the Debian package 😄.

@ravenclaw900
Copy link
Collaborator Author

Oddly, installing libnm0 did seem to fix the "Remember Password" problem. Do you want to add it as a dependency?

@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

Okay, strange that this is not required on x86 🤔.

I just recognised that libappindicator1 and libindicator7 are not available on Debian Bullseye.

Could you try if the following preserves Steam startup:

apt-mark manual libdbusmenu-gtk4
dpkg -P --force-depends libappindicator1 libindicator7

Okay, also with official Steam client, the "Play Game" button from the store website does not work, so it is a general issue with the Linux client, at least when using Firefox browser.
On x86 of course it doesn't matter much since the games browser in the client itself can be used.
Ah, in the client it seems the exact same website is present, so those buttons which link to steam:// URLs seem to be actually made for the clients, not to be used from a regular web browser?


Lol, on x86 with official launcher package as well as Debian package on x86, the GLib-GObject NMClient warnings/errors show up as well (without breaking anything). I installed libnm0 to see what changes on startup logs, and: the errors remain, but are fancy coloured ("WARNING" become yellow) and a blue coloured public IP address was added to the log like in @ravenclaw900 you logs as well without libnm0. Although it is actually libglib2.0-0 (or one of it's dependencies) which enables the colours and IP in the logs. It's however strange that obviously different libraries are used or required for some features on ARM compared to x86.

@ravenclaw900
Copy link
Collaborator Author

ravenclaw900 commented Feb 2, 2021

The steam:// links work on my computer (using Firefox), so I think it's a limitation of Linux.

@MichaIng
Copy link
Owner

MichaIng commented Feb 2, 2021

  • libnm0 fixes autologin as well in my case. Added it to the package dependencies.
  • libappindicator1 is definitely required, not only a dependency of it. How to handle it on Bullseye is a future issue, probably the package will still be added, we'll see.
  • On exit (via menu AND via panel icon) an illegal thread termination error message is thrown which hangs Steam, I couldn't find any fix for that.

We should report the issues and the autologin fix to Box86 so that it can be added to their readme.

I'll merge the pull request now, further debugging and fine tuning can be done at a later time.

@ravenclaw900
Copy link
Collaborator Author

Just for the record, I reported the Steam issues at ptitSeb/box86#326.

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

Successfully merging this pull request may close these issues.

DietPi-Software | Box86 / Box64 DietPi-Software | Steam client
3 participants