You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
USB host controller not enumerating in early boot on Apple Silicon M1 with kernel 6.18.10 (USB root broken, works on 6.17) #454
On Apple Silicon M1 (Asahi Linux), booting with kernel 6.18.10 breaks USB in early boot.
When the root filesystem is on a USB SSD, the system drops into the initramfs/emergency shell because the root device is not found. The USB bus is not enumerated at all in early boot.
This works reliably with 6.17.12, but fails with 6.18.10.
Observed behavior (6.18.10):
Kernel: 6.18.10-1-1-ARCH (aarch64, Asahi)
In early boot / initramfs:
/sys/bus/usb/devices is empty
/sys/class/scsi_host is empty
No /dev/sdX devices appear
dmesg shows:
usbcore, usb-storage, and uas drivers are registered
xhci_hcd and xhci_plat_hcd initcalls run
But no USB root hub / host is actually registered and no devices are enumerated
Result: root=UUID=… on USB cannot be found, boot drops to emergency shell.
Expected behavior:
USB host controller should be initialized in early boot
USB bus should appear in /sys/bus/usb/devices
USB storage should be enumerated and /dev/sdX should appear
Booting with root on USB should work (as it does on 6.17.12)
Regression:
6.17.12: USB root works, USB is enumerated normally in early boot
6.18.10: USB host not enumerated in early boot, USB root impossible
Additional notes:
The same USB SSD works fine with 6.18.10 when booting from internal NVMe and mounting the device later (i.e. USB works in the fully booted system).
This appears to be specific to early boot / initramfs / host controller bring-up.
Boot bundle (m1n1/DTBs) was updated and verified; the correct ESP is used.
The kernel version actually booted is confirmed via uname -a.
dmesg (early boot) shows xhci_hcd init but no actual host/bus registration.
Hardware:
Apple Silicon MacBook Pro M1 (Asahi Linux)
USB SSD: Silicon Motion / Feiya bridge (VID:PID 090c:2320)
(But the issue seems to be at host controller level, not storage/UAS.)
Steps to reproduce:
Install Asahi Linux with root filesystem on a USB SSD.
Boot with kernel 6.18.10. → System drops to emergency shell: root device not found.
Does the boot from USB rootfs use a separate uefi-only install? Then it's likely that it uses 6.17 DTBs in $ESP/m1n1/boot.bin. You can verify it with find /proc/device-tree/soc*/i2c* -name port. That will be empty with the 6.18 DTBs but have one result per USB type-c port for 6.17 DTBs (and vice versa for ports as name).
The install on the USB rootfs is expected to refresh $ESP/m1n1/boot.bin. As a workaround you can manually replace it with the boot.bin from https://github.com/AsahiLinux/m1n1/actions/runs/22668119346 (double unzip)
The same workaround will work for Gentoo asahi livecd. AsahiLinux/asahi-installer#414 will by itself not fix anything. It will just avoid the issue for new uefi-only installs once everything is in place.
Does the boot from USB rootfs use a separate uefi-only install? Then it's likely that it uses 6.17 DTBs in $ESP/m1n1/boot.bin. You can verify it with find /proc/device-tree/soc*/i2c* -name port. That will be empty with the 6.18 DTBs but have one result per USB type-c port for 6.17 DTBs (and vice versa for ports as name). The install on the USB rootfs is expected to refresh $ESP/m1n1/boot.bin. As a workaround you can manually replace it with the boot.bin from https://github.com/AsahiLinux/m1n1/actions/runs/22668119346 (double unzip) The same workaround will work for Gentoo asahi livecd. AsahiLinux/asahi-installer#414 will by itself not fix anything. It will just avoid the issue for new uefi-only installs once everything is in place.
Thank you for your justification. This is exactly my case (UEFI-only installation + DTBS under /proc/device-tree/soc*/i2c*). I will try your solution later.
Does the boot from USB rootfs use a separate uefi-only install? Then it's likely that it uses 6.17 DTBs in $ESP/m1n1/boot.bin. You can verify it with find /proc/device-tree/soc*/i2c* -name port. That will be empty with the 6.18 DTBs but have one result per USB type-c port for 6.17 DTBs (and vice versa for ports as name). The install on the USB rootfs is expected to refresh $ESP/m1n1/boot.bin. As a workaround you can manually replace it with the boot.bin from https://github.com/AsahiLinux/m1n1/actions/runs/22668119346 (double unzip) The same workaround will work for Gentoo asahi livecd. AsahiLinux/asahi-installer#414 will by itself not fix anything. It will just avoid the issue for new uefi-only installs once everything is in place.
I have Asahi minimal on my internal nvme partition. EFI on a second internal partition, mounted at /boot/efi
tried your suggestions, but unfortunately no luck.
boot.bin (on the efi partition) was definitely updated by update-m1n1. but I also tried replacing it with the download.
what else I tried:
reinstalled linux asahi 6.18.10-1-1
mkinitgpio -P
update-m1n1
checked that drivers are present.
in the emergency shell
name -r -> 6.18.10-1-1-ARCH
the device tree gives:
../connector/ports:
port@0
port@1
503000000.phy modalias: Capple, t8103-atcphy
phy-apple-atc binds to 503000000.phy, but registering 503000000.phy-mux gives -> EEXIST
no *phy-mux* to be found though.
unbind 503000000.phy -> "No such device"
USB host -> waiting_for_supplier
@jannau I have a similar result to @ushi909's. With my latest LiveCD after updating the boot.bin manually, the find /proc/device-tree/soc*/i2c* -name port command outputs are empty which shows that I am using 6.18.* DTBs. However, my USB port still doesn't work. My kernel is 6.18.10 as well.
Same problem here, find /proc/device-tree/soc*/i2c* -name port returns nothing, while I am on 6.18.15-400. Wondering if this may be a result of updated firmware? I copied it maybe two weeks ago as I was trying to get the ALS to work.
OK, so my issue looks like a similar, but unrelated one. Specifically USB actually does work here, with /dev/bus populated until I suspend. After resuming, /dev/bus is gone. Doesn't look like there's anything in dmesg that would suggest any issue:
Has anyone tried rebuilding U-Boot with newer 6.18 kernel dtbs?
This is what let me get back USB on my M1 Air with 6.18 kernels.
I can attach my U-Boot build if anyone wishes, but it's with an M1 Air DTB from 6.18 since USB was changed there. Note, I havent checked if it functions fully but dmesg looks good. I will check soon and update here.
Can confirm USB 2 and 3.x both work fine now. Just need to update U-Boot DTBs with newer 6.18 dtbs for the fix.
@ObiKeahloa I built u-boot from your repo and also built the DTBs fresh from AsahiLinux. Unfortunately on my Apple M1 MBP (2020) the regression persists. Still no USB in early boot. Between 6.17 and 6.18, 502280000.usb no longer transitions into a working xHCI host. Under 6.17 it creates xhci-hcd.0.auto and USB boot works; under 6.18 it stays present but never binds to xHCI, so root-on-USB fails.
I agree with @wrobelda it is too early to close this issue, U-boot hasn't yet updated the DTBs and the issue may persist should someone update normally.
Activity
discapes commentedon Feb 25, 2026
i wonder if this is related to the gentoo asahi livecd not working. it is 6.18.5, but i checked building it with 6.18.8 didn't work either.
ArchieMeng commentedon Mar 4, 2026
Based on upstream (#asahi-dev irc channel) discussion, this issue will probably be solved by AsahiLinux/asahi-installer#414.
jannau commentedon Mar 4, 2026
Does the boot from USB rootfs use a separate
uefi-onlyinstall? Then it's likely that it uses 6.17 DTBs in$ESP/m1n1/boot.bin. You can verify it withfind /proc/device-tree/soc*/i2c* -name port. That will be empty with the 6.18 DTBs but have one result per USB type-c port for 6.17 DTBs (and vice versa forportsas name).The install on the USB rootfs is expected to refresh
$ESP/m1n1/boot.bin. As a workaround you can manually replace it with the boot.bin from https://github.com/AsahiLinux/m1n1/actions/runs/22668119346 (double unzip)The same workaround will work for Gentoo asahi livecd. AsahiLinux/asahi-installer#414 will by itself not fix anything. It will just avoid the issue for new uefi-only installs once everything is in place.
ArchieMeng commentedon Mar 4, 2026
Thank you for your justification. This is exactly my case (UEFI-only installation + DTBS under /proc/device-tree/soc*/i2c*). I will try your solution later.
uschi909 commentedon Mar 4, 2026
I have Asahi minimal on my internal nvme partition. EFI on a second internal partition, mounted at /boot/efi
tried your suggestions, but unfortunately no luck.
boot.bin (on the efi partition) was definitely updated by update-m1n1. but I also tried replacing it with the download.
what else I tried:
reinstalled linux asahi 6.18.10-1-1
checked that drivers are present.
in the emergency shell
name -r -> 6.18.10-1-1-ARCH
the device tree gives:
../connector/ports:
port@0
port@1
503000000.phy modalias: Capple, t8103-atcphy
phy-apple-atc binds to 503000000.phy, but registering 503000000.phy-mux gives -> EEXIST
no *phy-mux* to be found though.
unbind 503000000.phy -> "No such device"
USB host -> waiting_for_supplier
ArchieMeng commentedon Mar 6, 2026
@jannau I have a similar result to @ushi909's. With my latest LiveCD after updating the boot.bin manually, the
find /proc/device-tree/soc*/i2c* -name portcommand outputs are empty which shows that I am using 6.18.* DTBs. However, my USB port still doesn't work. My kernel is 6.18.10 as well.uschi909 commentedon Mar 6, 2026
updated to 6.18.15-1-1-ARCH
unfortunately same issue
wrobelda commentedon Mar 30, 2026
Same problem here,
find /proc/device-tree/soc*/i2c* -name portreturns nothing, while I am on6.18.15-400. Wondering if this may be a result of updated firmware? I copied it maybe two weeks ago as I was trying to get the ALS to work.wrobelda commentedon Mar 31, 2026
OK, so my issue looks like a similar, but unrelated one. Specifically USB actually does work here, with
/dev/buspopulated until I suspend. After resuming,/dev/busis gone. Doesn't look like there's anything in dmesg that would suggest any issue:Is it possible that USB root doesn't come back from sleep/device tree is misconfigured?
EDIT. While I was investigating another issue (#473) related to suspending, I noticed this happened there:
ObiKeahloa commentedon Mar 31, 2026
Has anyone tried rebuilding U-Boot with newer 6.18 kernel dtbs?
This is what let me get back USB on my M1 Air with 6.18 kernels.
I can attach my U-Boot build if anyone wishes, but it's with an M1 Air DTB from 6.18 since USB was changed there.
Note, I havent checked if it functions fully but dmesg looks good. I will check soon and update here.Can confirm USB 2 and 3.x both work fine now. Just need to update U-Boot DTBs with newer 6.18 dtbs for the fix.
ObiKeahloa commentedon Mar 31, 2026
AsahiLinux/u-boot#31
I have created a pull request on the AsahiLinux u-boot with the required fix. Hopefully gets merged or, the fix is just added.
wrobelda commentedon Apr 1, 2026
@ObiKeahloa surprised this is even needed, I was under impression u-boot was kept up to date to match the current kernel and its device tree?
uschi909 commentedon Apr 1, 2026
@ObiKeahloa I built u-boot from your repo and also built the DTBs fresh from AsahiLinux. Unfortunately on my Apple M1 MBP (2020) the regression persists. Still no USB in early boot. Between 6.17 and 6.18, 502280000.usb no longer transitions into a working xHCI host. Under 6.17 it creates xhci-hcd.0.auto and USB boot works; under 6.18 it stays present but never binds to xHCI, so root-on-USB fails.
uschi909 commentedon Apr 4, 2026
I found a solution for my issue. The early boot path was using the wrong driver stack in initramfs
dwc3_of_simple was used instead of dwc3_apple.
adding dwc3_apple to MODULES in mkinitcpio.conf in my minimal boot system fixed it.
strangely, 6.17.x was working with the same configuration, so apparently something changed, which requires a new configuration for 6.18.x
wrobelda commentedon Apr 4, 2026
@uschi909 I wouldn't mark it as completed, it probably requires some upstream changes in configuration?
zavrik965 commentedon Apr 4, 2026
How about sleep mode? In my configuration after suspend drive was unmount forever, but early (in 6.17) after wake up drive have been mounted.
ObiKeahloa commentedon Apr 7, 2026
@uschi909
I agree with @wrobelda it is too early to close this issue, U-boot hasn't yet updated the DTBs and the issue may persist should someone update normally.
ObiKeahloa commentedon Apr 7, 2026
AFAIK it usually is, seems like it was forgotten this time? Genuinely no clue whats going on.
Merge branch 'selftests-bpf-convert-test_tc_tunnel-sh-to-test_progs'