I got a Skagen Falster Gen 6 (based on Fossil Gen 6) and installed Asteroid OS. First nightly, then release. On neither was I able to select SSH over USB, the watch was stuck in ADB mode.
As ADB is working, I tried to diagnose the issue with the help of AI. Following is the AI report, which sounds plausible to me:
Device: Fossil Gen 6 (Skagen variant), codename hoki
Affected versions:
- AsteroidOS 2.0, build 20260216211137
- AsteroidOS 2.1-nightly, build 20260227003819
Kernel: 4.14.206
All evidence below was collected on AsteroidOS 2.0 and verified identical on 2.1-nightly.
Symptom
Selecting "SSH" in the AsteroidOS USB settings has no effect. The watch stays in ADB-only mode — no RNDIS network interface appears on the host.
Root cause
usb-moded.service fails on boot and enters a restart loop. Its ExecStartPre script (/usr/bin/init_ffs) writes to legacy sysfs nodes that don't exist on this kernel. The kernel uses configfs USB gadgets instead.
Evidence
1. usb-moded.service is failed:
# systemctl status usb-moded.service -l
x usb-moded.service - usb-moded USB gadget controller
Loaded: loaded (/usr/lib/systemd/system/usb-moded.service; disabled; preset: disabled)
Active: failed (Result: exit-code) since Thu 2025-05-29 16:30:42 UTC; 9 months 4 days ago
Invocation: 092ac16214a04e3387e260aced43e77a
Process: 779 ExecStartPre=/usr/bin/init_ffs (code=exited, status=1/FAILURE)
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Scheduled restart job, restart counter is at 5.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Start request repeated too quickly.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Failed with result 'exit-code'.
May 29 16:30:42 hoki systemd[1]: Failed to start usb-moded USB gadget controller.
2. Journal shows init_ffs failing to write to missing sysfs nodes:
# journalctl -u usb-moded.service --no-pager -b -l
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Scheduled restart job, restart counter is at 3.
May 29 16:30:42 hoki systemd[1]: Starting usb-moded USB gadget controller...
May 29 16:30:42 hoki init_ffs[733]: /usr/bin/init_ffs: line 3: /sys/class/android_usb/android0/enable: Permission denied
May 29 16:30:42 hoki init_ffs[733]: /usr/bin/init_ffs: line 9: /sys/class/android_usb/android0/iSerial: Permission denied
May 29 16:30:42 hoki init_ffs[733]: /usr/bin/init_ffs: line 10: /sys/class/android_usb/android0/iManufacturer: Permission denied
May 29 16:30:42 hoki init_ffs[733]: /usr/bin/init_ffs: line 11: /sys/class/android_usb/android0/iProduct: Permission denied
May 29 16:30:42 hoki init_ffs[733]: /usr/bin/init_ffs: line 13: /sys/class/android_usb/android0/enable: Permission denied
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Control process exited, code=exited, status=1/FAILURE
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Failed with result 'exit-code'.
May 29 16:30:42 hoki systemd[1]: Failed to start usb-moded USB gadget controller.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Scheduled restart job, restart counter is at 4.
May 29 16:30:42 hoki systemd[1]: Starting usb-moded USB gadget controller...
May 29 16:30:42 hoki init_ffs[779]: /usr/bin/init_ffs: line 3: /sys/class/android_usb/android0/enable: Permission denied
May 29 16:30:42 hoki init_ffs[779]: /usr/bin/init_ffs: line 9: /sys/class/android_usb/android0/iSerial: Permission denied
May 29 16:30:42 hoki init_ffs[779]: /usr/bin/init_ffs: line 10: /sys/class/android_usb/android0/iManufacturer: Permission denied
May 29 16:30:42 hoki init_ffs[779]: /usr/bin/init_ffs: line 11: /sys/class/android_usb/android0/iProduct: Permission denied
May 29 16:30:42 hoki init_ffs[779]: /usr/bin/init_ffs: line 13: /sys/class/android_usb/android0/enable: Permission denied
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Control process exited, code=exited, status=1/FAILURE
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Failed with result 'exit-code'.
May 29 16:30:42 hoki systemd[1]: Failed to start usb-moded USB gadget controller.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Scheduled restart job, restart counter is at 5.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Start request repeated too quickly.
May 29 16:30:42 hoki systemd[1]: usb-moded.service: Failed with result 'exit-code'.
May 29 16:30:42 hoki systemd[1]: Failed to start usb-moded USB gadget controller.
3. The init_ffs script expects legacy android_usb sysfs:
# cat /usr/bin/init_ffs
#!/bin/sh
echo "0" > /sys/class/android_usb/android0/enable
manufacturer="$(cat /system/build.prop | grep -o 'ro.product.manufacturer=.*' | cut -d'=' -f 2)"
model="$(cat /system/build.prop | grep -o 'ro.product.model=.*' | cut -d'=' -f 2)"
serial="$(cat /proc/cmdline | sed 's/.*androidboot.serialno=//' | sed 's/ .*//')"
echo $serial > /sys/class/android_usb/android0/iSerial
echo $manufacturer > /sys/class/android_usb/android0/iManufacturer
echo $model > /sys/class/android_usb/android0/iProduct
echo "1" > /sys/class/android_usb/android0/enable
4. The legacy sysfs node is a stub — missing enable, iSerial, etc.:
# ls /sys/devices/virtual/android_usb/android0/
power state subsystem uevent
5. The kernel uses configfs USB gadgets instead:
# find /sys/kernel/config/usb_gadget/ -maxdepth 3
/sys/kernel/config/usb_gadget/
/sys/kernel/config/usb_gadget/g1
/sys/kernel/config/usb_gadget/g1/os_desc
/sys/kernel/config/usb_gadget/g1/os_desc/qw_sign
/sys/kernel/config/usb_gadget/g1/os_desc/b_vendor_code
/sys/kernel/config/usb_gadget/g1/os_desc/use
/sys/kernel/config/usb_gadget/g1/strings
/sys/kernel/config/usb_gadget/g1/strings/0x409
/sys/kernel/config/usb_gadget/g1/configs
/sys/kernel/config/usb_gadget/g1/configs/c.1
/sys/kernel/config/usb_gadget/g1/functions
/sys/kernel/config/usb_gadget/g1/functions/ffs.adb
/sys/kernel/config/usb_gadget/g1/UDC
/sys/kernel/config/usb_gadget/g1/bcdUSB
/sys/kernel/config/usb_gadget/g1/bcdDevice
/sys/kernel/config/usb_gadget/g1/idProduct
/sys/kernel/config/usb_gadget/g1/idVendor
/sys/kernel/config/usb_gadget/g1/bMaxPacketSize0
/sys/kernel/config/usb_gadget/g1/bDeviceProtocol
/sys/kernel/config/usb_gadget/g1/bDeviceSubClass
/sys/kernel/config/usb_gadget/g1/bDeviceClass
Fix needed
/usr/bin/init_ffs (and likely usb-moded configuration) needs to be updated to use the configfs gadget API at /sys/kernel/config/usb_gadget/g1/ instead of the legacy /sys/class/android_usb/android0/ interface. An RNDIS function needs to be created under configfs for SSH mode to work.
I got a Skagen Falster Gen 6 (based on Fossil Gen 6) and installed Asteroid OS. First nightly, then release. On neither was I able to select SSH over USB, the watch was stuck in ADB mode.
As ADB is working, I tried to diagnose the issue with the help of AI. Following is the AI report, which sounds plausible to me:
Device: Fossil Gen 6 (Skagen variant), codename
hokiAffected versions:
Kernel: 4.14.206
All evidence below was collected on AsteroidOS 2.0 and verified identical on 2.1-nightly.
Symptom
Selecting "SSH" in the AsteroidOS USB settings has no effect. The watch stays in ADB-only mode — no RNDIS network interface appears on the host.
Root cause
usb-moded.servicefails on boot and enters a restart loop. ItsExecStartPrescript (/usr/bin/init_ffs) writes to legacy sysfs nodes that don't exist on this kernel. The kernel uses configfs USB gadgets instead.Evidence
1. usb-moded.service is failed:
2. Journal shows
init_ffsfailing to write to missing sysfs nodes:3. The
init_ffsscript expects legacy android_usb sysfs:4. The legacy sysfs node is a stub — missing
enable,iSerial, etc.:5. The kernel uses configfs USB gadgets instead:
Fix needed
/usr/bin/init_ffs(and likelyusb-modedconfiguration) needs to be updated to use the configfs gadget API at/sys/kernel/config/usb_gadget/g1/instead of the legacy/sys/class/android_usb/android0/interface. An RNDIS function needs to be created under configfs for SSH mode to work.