Next Previous Contents

3. Installation of the Firmware

3.1 Overview

3.2 Detailed installation

Note that most of the instructions in this section is obsoleted by the linux hotplug system. All references to ezusb2131 are obsolete though it could well be possible, that this procedure is still usable. I'll update the section, soon. Instead of the ezusb2131 use the fxload program together with the linux-hotplug infrastructure. Until this section is updated, find more material in the linux-hotplug homepage at <http://sourceforge.net/projects/linux-hotplug/>, and in the Hotplug subdirectory.

You need the following prerequisits:

The linux kernel has to be USB enabled. Check this using:

> cat /proc/bus/usb/devices
which should at least list something, e.g.:
|      T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
|      B:  Alloc=398/900 us (44%), #Int=  7, #Iso=  0
|      D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
|      P:  Vendor=0000 ProdID=0000 Rev= 0.00
|      S:  Product=USB OHCI Root Hub
|      S:  SerialNumber=d182c000
|      C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
|      I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
|      E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
Plug in the MidiSport1x1 and list the USB devices again. You should find it properly in the list, now:
| ...
|      T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 11 Spd=12  MxCh= 0
|      D:  Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
| >>>  P:  Vendor=0763 ProdID=1010 Rev= 0.01
|      C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
|      I:  If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
|      I:  If#= 0 Alt= 1 #EPs=13 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
|      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl= 10ms
| ... long list of endpoints
|      E:  Ad=0a(O) Atr=01(Isoc) MxPS=  16 Ivl=  1ms
|      I:  If#= 0 Alt= 2 #EPs=13 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
|      E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl= 10ms
| ... long list of endpoints
|      E:  Ad=0a(O) Atr=01(Isoc) MxPS=  16 Ivl=  1ms
| ...
Notice the line
|      P:  Vendor=0763 ProdID=1010 Rev= 0.01
which gives us the vendor and product ids of the device.

If you're having troubles with this step, consult the USB-HOWTO <http://www.linux-usb.org/USB-guide/book1.html> and /usr/src/linux/Documentation/usb/proc_usb_info.txt.

Get the ezusb2131 firmware running. To this end, follow the instructions in this package and finally insert the ezusb2131 driver using:

|      insmod ezusb2131.o vendor_id=0x763 product_id=0x1010

Check the kernel log

> tail /var/log/messages

to find something like:

| ezusb2131: found ezusb venid 0x763, prodid 0x1010 interface_num:0
| ezusb2131: ready for download from /proc/ezusb/dev0

and the filesystem:

> ls -l /proc/ezusb
| --w-------    1 root     root            0 Sep 26 15:27 dev0

This device allows to download the firmware:

> cat ezusbmidi.ihx > /proc/ezusb/dev0

Now, the firmware is downloaded into the hardware:

> tail /var/log/messages
| ezusb2131: download started for /proc/ezusb/dev0
| ezusb2131: downloaded 2765 bytes to /proc/ezusb/dev0, re-enumerating
| usb.c: USB disconnect on device 10
| ezusb2131: /proc/ezusb/dev0 disconnected
| hub.c: USB new device connect on bus1/1/3, assigned device number 12
| usbaudio: device 12 audiocontrol interface 0 interface 1 MIDIStreaming not supported
| usbaudio: device 12 audiocontrol interface 0 has 0 input and 0 output AudioStreaming interfaces
| ezusb2131: found ezusb venid 0x763, prodid 0x1010 interface_num:0
| ezusb2131: ready for download from /proc/ezusb/dev0
| ezusb2131: found ezusb venid 0x763, prodid 0x1010 interface_num:1
| ezusb2131: interface number not zero, 1, ezusb2131.c,1135
| /etc/hotplug/usb.agent: ... no modules for USB product 763/1010/1

> cat /proc/bus/usb/devices
| ...
| T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#= 12 Spd=12  MxCh= 0
| D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
| P:  Vendor=0763 ProdID=1010 Rev= 0.01
| S:  Manufacturer=Lars Doelle <lars.doelle@on-line.de>
| S:  Product=Simple USB MIDI Adapter Driver
| S:  SerialNumber=Copyright (c) 2001 by Lars Doelle (GPLv2)
| C:* #Ifs= 2 Cfg#= 1 Atr=00 MxPwr=100mA
| I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=ezusb2131
| I:  If#= 1 Alt= 0 #EPs= 2 Cls=01(audio) Sub=03 Prot=00 Driver=(none)
| E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
| E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
| ...

Notice the USB LED on the MidiSports 1x1 happily blinking. You should be able to repeat the last step, too, resulting in a reset visible on the leds of the device.

Now the device is fully prepared for the driver. Compile and insert the usb-midi driver:

> insmod usb-midi.o

and verify the success of the operation:

> cat /proc/bus/usb/devices
| ...
| T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#= 12 Spd=12  MxCh= 0
| D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
| P:  Vendor=0763 ProdID=1010 Rev= 0.01
| S:  Manufacturer=Lars Doelle <lars.doelle@on-line.de>
| S:  Product=Simple USB MIDI Adapter Driver
| S:  SerialNumber=Copyright (c) 2001 by Lars Doelle (GPLv2)
| C:* #Ifs= 2 Cfg#= 1 Atr=00 MxPwr=100mA
| I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=ezusb2131
| I:  If#= 1 Alt= 0 #EPs= 2 Cls=01(audio) Sub=03 Prot=00 Driver=midi
| E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
| E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
| ...

There, check the line indicating that the interface 1 is now claimed by the usb midi driver:

| I:  If#= 1 Alt= 0 #EPs= 2 Cls=01(audio) Sub=03 Prot=00 Driver=midi

One should find this reported in the kernel logs, too:

> tail /var/log/messages
| usb-midi: Found MIDISTREAMING on dev 0763:1010, iface 1
| usb-midi: Found MIDIStreaming device corresponding to Release 1.00 of spec.
| usb-midi: Found IN Jack 0x01 EMBEDDED
| usb-midi: Found IN Jack 0x02 EXTERNAL
| usb-midi: Found OUT Jack 0x03 EMBEDDED, 1 pins
| usb-midi: Found OUT Jack 0x04 EXTERNAL, 1 pins
| usbmidi: found [ Simple USB MIDI Adapter Driver ] (0x0763:0x1010), attached:
| usbmidi: /dev/midi02: in (ep:81 cid: 0 bufsiz:64) out (ep:01 cid: 0 bufsiz:64)

That's it. /dev/midi02 is now ready to read and write raw midi events:

> echo -n $'\x90\x37\x7f' > /dev/midi2
> cat /dev/midi2 | od -x
| 0000000 fefe fefe fefe fefe fefe fefe fefe fefe
| ...

Use you prefered midi player to play files. If you're looking for a player, try the 'midiplay' for a command line tool or give 'muse' a shot for something decent.

3.3 Installation dependencies

The ezusb2131 and the usb-midi driver can be inserted in any order. The ezusb2131 must be inserted before downloading the firmware. The firmware must be downloaded each time the MidiSport1x1 is newly connected to the system.


Next Previous Contents