> I found out that `ls #u' is useful since #u is the short name bound to the
> usb directory. So if it works it means that usbd is up?
No, the existence of '#u' just shows that the kernel usb driver exists
and a usb interface has been found. The user-level usbd program is
needed in order to connect and enumerate any devices. You can use
the ps(1) command to see whether usbd is running.
term% ps|grep usbd
miller 5 0:06 4:02 492K Sleep usbd
miller 7 0:05 0:15 492K Pread usbd
miller 8 0:00 0:00 492K Pread usbd
miller 9 0:00 0:00 492K Rendez usbd
miller 10 0:00 0:00 492K Rendez usbd
miller 68 0:00 0:00 492K Rendez usbd
You said you had seen the error message 'no hubs' when starting usb/usbd.
It's often useful to explore the source code to find more information
about an error message:
term% src -n usb/usbd
/sys/src/cmd/usb/usbd/usbd.c:809
term% grep 'no hubs' /sys/src/cmd/usb/usbd/*.c
/sys/src/cmd/usb/usbd/usbd.c: sysfatal("/dev/usb: no
hubs");
Sysfatal exits after printing a message, so that explains why usbd is
not running, and therefore isn't providing the /srv/usb service.
To look for more clues about what's going wrong:
- try 'ls -d /dev/usb' to see if '#u' is bound in /dev
- try 'cat /dev/usb/ctl' to see what the state of your usb interfaces is
- look in /dev/kmesg to see if there are any boot-time error messages
relating to usb