Jacek Pliszka's USB toys under Linux

For information how to compile just a module for Red Hat without compiling the whole kernel look here. I found it extremely useful for both Labtec and Phison devices.

USB works nicely with Linux 2.4.x kernels and newer. Most of the information on this page was tested with various Red Hat kernels for Red Hat 7.2 and 7.3.

Quick basic info - how to get info about USB device under Linux

  1. The main information source is here - look there for "DEvice support" and for "Working devices list".
  2. The latter is a link to a convenient database with compatible hardware is here. Search there not only for name or product model but also for you VendorId and ProductId. These you can read from usbview or lsubs or dmesg or by reading /var/log/messages.
  3. If you can find no information - use google.com for search for Linux drivers.
  4. If this does not help - get newest kernel sources and look there for USB drivers - they may be there (search for ProductId and Vendor Id).
  5. The last resort is searching linux-usb-users and linux-usb-devel mailing lists and posting a question there.

On this page

lsusb and other USB utils

Can be found here

Bytecc Cardbus (PCMCIA) 2.0 controller

It is NEC based card. Works with Red Hat 7.3 (2.4.18-10) but it is buggy - 2.4.20 or 2.5.36 are suggested. The only trick I had to do to get it working is to connect it to PS2 port - otherwise cardbus does not provide enough power and it does not work with USB-powered devices.

Labtec Axis 712 USB headset

Works out of box in full-duplex mode! So if you have problems with your sound card,e.g. in notebook - this may be useful for you!

In older kernels (before 2.4.17 and before 2.5.1) has a bug in drivers/usb/audio.c. In order to fix it either take audio.c from a new kernel or apply this patch.. Makefile for Red Hat under link given at the top of this page.

If you have more than one device use symbolic links to control the default one. So if you have mixer but no mixer0 : mv mixer mixer0 and then by ln -s mixer0 mixer or ln -s mixer1 mixer you control which mixer is the default one. Same applies to dsp and audio.

Recording at other rates than 8000, 11025, 22050, 44100, and 48000 44100 does not really work - you have to do the conversion manually. Examples of test commands (from Reinhard Max) which sound good:

ecasound -f:s16_le,2ch,8000,interleaved -sr:8000 -b:32 -i:/dev/dsp1 -o:/dev/dsp1
sox -r48000 -w -tossdsp /dev/dsp0 -r48000 -w -tossdsp /dev/dsp0
and which sound bad:
ecasound  -sr:8000 -b:32 -i:/dev/dsp1 -o:/dev/dsp1
sox -r44100 -c2 -tossdsp /dev/dsp1 -r44100 -c2 -tossdsp /dev/dsp1

First mixer does not work for recording. For recording use the 2nd one - it appears as the last one in gmix. First mixer for microphone should control how much of the microphone input is fed back to the speakers - but it was reported it does not work.

There is a following bug found by Reinhard which is yet to be debugged:

       ecasound -i /dev/dsp0 -o /dev/dsp0
 
" This worked for some seconds, but then ecasound got stuck in a read() call and the USB bus hung up (USB mouse stopped working). I wasn't able to kill ecasound or reload the USB drivers so I had to reboot. When giving ecasound an explicit buffer size (e.g. -b 32) or using sox or cat to create the loop, it worked."

If the volume button does not work for you - use one of the following simple programs: for hid device (older kernels <=2.4.9) and for for evdev device (newer kernels >=2.4.18). Look inside it is really simple. Requires aumix. In the evdev version /dev/input/event2 is used (change to your device). If you do not have /dev/usb/hidddev* or /dev/input/event* you have to create them as root:

mknod /dev/usb/hiddev0 c 180 96
mknod /dev/usb/hiddev1 c 180 97
mknod /dev/usb/hiddev2 c 180 98
or
mknod /dev/input/event0 c 13 64
mknod /dev/input/event1 c 13 65
mknod /dev/input/event2 c 13 66
. In newer kernels you need the following lines to /etc/modules.conf:
above audio evdev # or
above input evdev # or
alias char-major-13-64 evdev # 

Flash cards readers

If you use cards with different sizes, use eject /dev/sda (or the name the reader uses) after removing the first card in order to get the right size of partitions. Another generic hint is that you need module sd_mod to be loaded. Also you should mount /dev/sda1, not /dev/sda! To check what your partitions are use fdisk /dev/sda which should show you partitions numbers and names.
AVL USB 5in1 USB card writer/reader produced by Phison
Sorry! My device went on fire and I do not have it any more!

It is also branded as Kanguru. The models newer than Sep 2001 should be fully Linux compatible and work out-of-box (maybe with extra modules.conf lines as below). The older models requires the driver below. Unfortunately the upgrade of firmware in older models is unlikely due to technical issues. Here you can get a gzipped tarred archive with patches v0.2 (v0.1 got problems) for 2.4.1 (from Lee Kok Wah from Phison) and 2.4.18 (adjusted by Tero Manninen). For Red Hat I needed to add these lines to modules.conf:

options scsi_mod max_scsi_luns=3
below usb-storage sd_mod
Makefile for Red Hat under link above.
CYPRESS (TEC) SM-CF
This is my favorite one. I got one with firmware 0.76. Worked out of box with Red Hat 7.3 as Travel Flash but fast as Phison. Reasonable speed, cheap, both SM and CF. The only disadvantage is that it does not have USB B plug but some non-standard one so you need to carry cable as well. My model name is CR-V6-UCS (or CRV6UCS).
5in1 (6in1) Travel Flash reader made by PQI
Works out of box with Red Hat 7.2. Cute little toy. The only drawback is that is very slow: 300kB/s for SM and 150kB/s for CF. This is a very popular device often sold under different names.

Compaq iPAQ USB 10/100 Ethernet adapter

Works with pegasus driver. If you got kernel older than 2.4.19 it is sufficient to compile the pegasus.c. Just apply this trivial patch.. Makefile for Red Hat under link above.

Nomad II

My Nomad II has 32MB onboard, 128M in SmartMedia card. I use firmware 3.04. It works perfectly with version 0.82 libnomadii (driver) and nomadii (CLI) or gnoii (unstable GUI) from: sourceforge, see list of files here. Current Linux drivers work better than Windows ones as in the latter fils are often corrupted during upload.

For device access you can use suid or hotplugging - see doc directory. This is my favorite:

chown --reference=/dev/console $DEVICE
It gives the rights to access the Nomad to the console owner (usually the person using the first Xwindow session). Other examples can be found in hotplug subdirectory of documentation dir.

If you want to access your nomad from mc put this file in /usr/lib/mc/extfs, make it executable and add line:

nomad
in /usr/lib/mc/extfs/extfs.ini. Then enjoy access to your nomad with:
mc ~/mp3 /#nomad
or, if mc is already running, just cd #nomad.

Wireless 802.11b (Wi-Fi) USB adapters

This has been moved to a spearate page here.

USB to PS2 converter

I have one made by Maxxtro. The model name is UAPS12. Works with no problems. Keyboard immediately. For mouse I needed an extra entry with SendcoreEvents in XF86Config-4. The only minor problem is that the wheel does not work. These are relevant parts of my XF86Config-4:
Section "ServerLayout"
        Identifier "XFree86 Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"     # touchpad
        InputDevice    "Mouse1" "SendCoreEvents"  # this is the UAPS12 mouse
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "mouse"
        Option      "Device"       "/dev/input/mouse0" # or /dev/input/mice 
        Option      "Protocol"     "MouseManPlusPS/2"
        Option      "ZAxisMapping" "4 5" # does not work :(
EndSection

Veo Stingray USB camera

Works with ibmcam from 2.4.18 on.

MPEG TV station USB Kworld

This has VendorId:ProductId 0733:0430 - same as propriatary Intel camera. There is some SPCA50X driver on sourceforge here, not tried yet. search on www.qbik.ch too.

USB hubs

I got two: one by Logitech and one microHub by IOgear (very cute little d evice). Both work with no problems out fo box.

Nikon Coolpix 995 digital camera

Works out-of-box with Red Hat 7.2

Creative VoIP Blaster

Works nicely in VoIP to VoIP mode. Drivers are here Integation with OpenH323 is under development.

Atech digilog ADUE235W, ME-320 Series ME-320U2 external 5.25" HDD/CD USB 2.0 enclosure

This cheap ($72 at www.xpcgear.com) ugly but light and small 5.25" external USB 2.0 enclosure work great with 2.4.18. I am able to write at 4x speed with it (USB 1 limit) on my USB 1.2 HP Omnibook 4150

???? external 2.5" HDD USB 2.0 enclosure

VendorId: 05e3 ProductId: 0702. Works great with Red Hat Linux 7.3 ! Trick: in newer versions you have to remove its unusual_devs entry and compile your own usb-storage.o module. HOWTO - see above (but remove mcrw). Hint: you can power it from USB only if you shorten D5 diode. It protects the case from the faulty USB cable.

Philips Series 400 (PCRW464)

Works nicely with kernel 2.4.18.

Scanners

Setup is very easy. First check this page if your scanner is supported. If you cannot find it there - search on the web. In my case setup was easy. All I had to do is to edit /etc/sane/dll.conf:
epson
and /etc/sane/epson.conf:
usb /dev/usb/scanner0
Then simply check your scanner with usbview and scanimage.

In order to use all implemented features of your scanner run:

scanimage --help
then check list availaible devices. In my case it is epson:/dev/usb/scanner0. Then run(with epson replaced by your backend):
scanimage --help -d epson
This is the way I use my epson for scanning papers:
scanimage --wait-for-button=yes --mode Binary --resolution 300dpi --batch --batch-start=1 --format=pnm --batch-double
scanimage --wait-for-button=yes --mode Binary --resolution 300dpi --batch --batch-start=2 --format=pnm --batch-double
Then I use convert to crop the needed part of the picture and pnmtotiff in order to get maximal compression:
convert -monochrome -crop 1824x2600 file.pnm file-a.pnm; 
pnmtotiff -g4 file-a.pnm > file.tiff
Visioneer OneTouch 8100
Avoid it - it does not work wtih Linux and vendors do not want to provide information about it
Epson Perfection 610
Kind of slow but cheap (I paid $35) and works great with Linux.
HP 6300
Works great with RH 7.2. Setup similar as above. DEbugging: Jesli USB działa to po podłączeniu skanera w /proc/bus/usb/devices powinna pojawic sie informacja o skanerze. Skaner zapewne bedzie widziany jako skaner 0 w /dev/usb/scanner0. Nalezy upewnić się komendą
stat /dev/usb/scanner0
że numery urządzenia są poprawne: 180,48 (b4,30 w hex-ie). Poza tym nie wiem czy potrzebnie ale dodałem poniższe linie do /etc/conf.moduls:
stat /dev/usb/scanner0
że numery urządzenia są poprawne: 180,48 (b4,30 w hex-ie). Poza tym nie wiem czy potrzebnie ale dodałem poniższe linie do /etc/conf.moduls:
alias char-major-166      acm
alias char-major-180      usbcore
alias char-major-240      usb-serial
alias usb-controller usb-uhci
post-install usb-uhci modprobe scanner
options scanner vendor=0x03f0 product=0x0601
Oczywiście jeśli ktoś ma OHCI a nie UHCI to powinien wpisać co innego (sprawdzanie przez lspci -v). Warto sprawdzić czy kody vendor i product zgadzają się z tym co widzieliśmy w /proc/bus/usb/devices. Następnie ładujemy USB i driver skanera (jeśli nie został juz załadowany) oraz upewniamy że załadowały się poprawnie:
modprobe usb-uhci
modprobe scanner
lsmod
Następnie edytujemy pliki w /etc/sane.d. W dll.conf zostawiamy wyłącznie:
hp
zaś w hp.conf zostawiamy wyłącznie:
/dev/usb/scanner0
option connect-device
Wtedy uruchamiamy xscanimage i skanujemy. Następnie jeszcze tylko pozwalamy skanować wszystkim:
chmod a+rw /dev/usbscanner


Jacek Pliszka
Last modified: Wed May 7 11:54:10 PDT 2003