> 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


Reply via email to