Handheld Daemon 2.6.3 broken on GPD Win 4 (8840U)

I recently updated Bazzite (Stable), and found that HHD no longer works. Controller now reports a 360 controller, no gyro available, and triple clicking the R4 button does not bring up its menu. Is there a way to downgrade back to the previous known working version? I was on 2.5.3 before it broke. I tried running sudo systemctl enable --now hhd@$(whoami) and restarting to no avail.
Solution:
hhd@root needs to be disabled and stopped
Jump to solution
60 Replies
antheas
antheas9mo ago
journalctl | fpaste
antheas
antheas9mo ago
did you turn on the debug option? need to tweak the command i send journalctl -b 0 | fpaste too big
doink
doinkOP9mo ago
Sure thing, re-running.
antheas
antheas9mo ago
your device has not been tested before
antheas
antheas9mo ago
also, clicking multiple times does not work on GPD, holding does but if you press multiple times its like holding
doink
doinkOP9mo ago
Interesting. I'll try holding. Gyro and controller emulation definitely does not work. I found that going to HHD.dev does work, seems like the service is sorta functioning.
antheas
antheas9mo ago
@Kyle Gospo hold the ISOs for a min no it closed on your device
doink
doinkOP9mo ago
Holding doesn't work either, just tested.
antheas
antheas9mo ago
for f in /sys/class/dmi/id/*; do echo "$f:"; sudo cat $f; done its ok its not supported yet, so lets add support for it real quick yes one of your problems is you enabled debug mode rm -r ~/.config/hhd
doink
doinkOP9mo ago
I don't believe I endabled a debug mode, I'll run those commands now.
antheas
antheas9mo ago
then sudo pkill hhd --signal=SIGKILL need the output of this
doink
doinkOP9mo ago
/sys/class/dmi/id/bios_date: 03/12/2024 /sys/class/dmi/id/bios_release: 0.56 /sys/class/dmi/id/bios_vendor: American Megatrends International, LLC. /sys/class/dmi/id/bios_version: 0.56 /sys/class/dmi/id/board_asset_tag: Default string /sys/class/dmi/id/board_name: G1618-04 /sys/class/dmi/id/board_serial: Default string /sys/class/dmi/id/board_vendor: GPD /sys/class/dmi/id/board_version: Ver. 1.0 /sys/class/dmi/id/chassis_asset_tag: Default string /sys/class/dmi/id/chassis_serial: Default string /sys/class/dmi/id/chassis_type: 10 /sys/class/dmi/id/chassis_vendor: SU /sys/class/dmi/id/chassis_version: Default string /sys/class/dmi/id/ec_firmware_release: 0.21 /sys/class/dmi/id/modalias: dmi:bvnAmericanMegatrendsInternational,LLC.:bvr0.56:bd03/12/2024:br0.56:efr0.21:svnGPD:pnG1618-04:pvrVer.1.0:rvnGPD:rnG1618-04:rvrVer.1.0:cvnSU:ct10:cvrDefaultstring:skuDefaultSKU: /sys/class/dmi/id/power: cat: /sys/class/dmi/id/power: Is a directory /sys/class/dmi/id/product_family: Game machining Series 27 /sys/class/dmi/id/product_name: G1618-04 /sys/class/dmi/id/product_serial: Default string /sys/class/dmi/id/product_sku: Default SKU /sys/class/dmi/id/product_uuid: 7da0a200-dcb3-11ee-b182-e30100372932 /sys/class/dmi/id/product_version: Ver.1.0 /sys/class/dmi/id/subsystem: cat: /sys/class/dmi/id/subsystem: Is a directory /sys/class/dmi/id/sys_vendor: GPD /sys/class/dmi/id/uevent: MODALIAS=dmi:bvnAmericanMegatrendsInternational,LLC.:bvr0.56:bd03/12/2024:br0.56:efr0.21:svnGPD:pnG1618-04:pvrVer.1.0:rvnGPD:rnG1618-04:rvrVer.1.0:cvnSU:ct10:cvrDefaultstring:skuDefaultSKU:
antheas
antheas9mo ago
i hate the fact gpd did not update their board name for this
doink
doinkOP9mo ago
Seems like they just dropped in an 8840U, updated some microcode, and called it a day lol
antheas
antheas9mo ago
your problem is 90% that you did some wirdness sudo systemctl stop hhd@ and then hit tab i think there are multiple services there + the debug mode
doink
doinkOP9mo ago
Done
antheas
antheas9mo ago
did you have a root service? hhd@root?
doink
doinkOP9mo ago
Nope, it was my username
antheas
antheas9mo ago
Apr 15 11:17:11 GPDwin4 bazzite-user-setup[5033]: Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
Apr 15 11:17:11 GPDwin4 bazzite-user-setup[5033]: Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
indeed @Kyle Gospo bazzite setup runs as the root user if you disable that plus delete the configs of your user to start fresh you should be good
doink
doinkOP9mo ago
How do I delete the config?
antheas
antheas9mo ago
rm -r ~/.config/hhd then reboot
doink
doinkOP9mo ago
Oh yeah, sorry. Rebooting now.
antheas
antheas9mo ago
you disabled hhd@root?
Kyle Gospo
Kyle Gospo9mo ago
@antheas
# Handle privileged tasks
pkexec /usr/libexec/bazzite-privileged-user-setup "$USER"
# Handle privileged tasks
pkexec /usr/libexec/bazzite-privileged-user-setup "$USER"
doink
doinkOP9mo ago
I stopped hhd@[username]
antheas
antheas9mo ago
no your user is fine
Kyle Gospo
Kyle Gospo9mo ago
echo 'Enabling HHD'
pkexec /usr/libexec/bazzite-enable-hhd "$USER"
echo 'Enabling HHD'
pkexec /usr/libexec/bazzite-enable-hhd "$USER"
Solution
antheas
antheas9mo ago
hhd@root needs to be disabled and stopped
Kyle Gospo
Kyle Gospo9mo ago
systemctl enable --now hhd@$(systemd-escape $1).service
systemctl enable --now hhd@$(systemd-escape $1).service
if this is an old install it may explain @root running
antheas
antheas9mo ago
no its latest
Kyle Gospo
Kyle Gospo9mo ago
but we're definitely not enabling as root unless the account is root bazzite-user-setup is run as the user and passes "$USER" to the script
antheas
antheas9mo ago
that script needs to check if its running as root and not run as root
Kyle Gospo
Kyle Gospo9mo ago
if it's running as root the user has majorly fucked up like made a root account or run it themselves
antheas
antheas9mo ago
well multiple users have majorly fucked up just make it exit if it runs as 0 imo
Kyle Gospo
Kyle Gospo9mo ago
hmm ok, I'll add a sanity check
antheas
antheas9mo ago
if [ "$EUID" = 0 ]
then echo "Bazzite setup ran as root user. Exitting."
exit
fi
if [ "$EUID" = 0 ]
then echo "Bazzite setup ran as root user. Exitting."
exit
fi
doink
doinkOP9mo ago
Alright, I stopped and disabled hhd@root, cleared hhd's config, then rebooted. Seems like things are working now. Testing gyro now...
antheas
antheas9mo ago
gyro might stop working after suspend if it does please say so
doink
doinkOP9mo ago
Testing that now. Yup, gyro stops working after resume
antheas
antheas9mo ago
We have a workaround for that @Aru i need to figure out how to fix it though
doink
doinkOP9mo ago
I use evdevhook2 to get gyro to work with [nintendont], btw. Do I just have to reboot to make it work again?
antheas
antheas9mo ago
you dont need anything to use it with nintendont if you dont need steam input the dualsense controller will work you can rmmod and modprobe the bmi260 modules
Aru
Aru9mo ago
GitHub
gpd-win-tricks/win4-gyro-suspend-fix at main · aarron-lee/gpd-win-t...
Info on running linux on GPD Win devices. Contribute to aarron-lee/gpd-win-tricks development by creating an account on GitHub.
Aru
Aru9mo ago
Only tested on the 6800u and 7840u win 4
Kyle Gospo
Kyle Gospo9mo ago
Done
Aru
Aru9mo ago
I'm assuming it'll work on the 8840u win 4, but no one has tried
doink
doinkOP9mo ago
Shoot, I'll try it lol
Aru
Aru9mo ago
Might require a reboot for it to start working
doink
doinkOP9mo ago
That worked! Looks like 8840U is pretty much the same as 7840U. Seems to make sense, the 8840U is almost identical to the 7840U. I'll mark this as solved. Weird how that happened, not sure what was up with that.
antheas
antheas9mo ago
Ill try to fix it soon by disabling the hrtimer before suspend
doink
doinkOP9mo ago
You guys are awesome, by the way. Thanks so much for your help ❤️ You're the reason gaming on Linux is great.
Aru
Aru9mo ago
so basically the same bug is on all GPD Win 4 models. 🤔 at least it's easy to fix glad to hear it worked, updated the readme with the 8840u for the gyro fix as well
antheas
antheas9mo ago
Turns out win mini too All bmi260 models I'll have to think about how to hold inhibitor locks now
Aru
Aru9mo ago
oh, the win mini too? interesting i'll add that to the repo then
antheas
antheas9mo ago
Yeah toast mentioned on the nix pull request Would have been nice to have known beforehand Have to add dbus to hhd can you test for me if gyro works if you disable it before sleep on hhd?
Aru
Aru9mo ago
sorry, meant to followup earlier. nope, disabling gyro in hhd before suspend, and re-enabling it on resume, didn't work
antheas
antheas9mo ago
Saves a bit of work for me
Aru
Aru9mo ago
yeah, i don't think it's an hhd issue
Want results from more Discord servers?
Add your server