M-Audio Ozone (built 2003) with OpenSuse Leap

M-Audio sold around 2003 this MIDI keyboard. Besides the 2 octave keyboard it offers also an external USB Sound card with many audio connections. Moreover it offers controls to control a DAW application. Target Operating System were Mac and Windows.

I got such a keyboard in 2020 and tried to use it with Linux. This is possible and I describe here what has to be done.

The connectivity between Keyboard and PC is USB, with version 1.1. This is slow, but enough for Stereo 48KBit or Mono 96KBit .

I tested the MIDI feature of the keyboard (MIDI out connection) and it works fine. More on that maybe later in another article.

After connecting the USB cable, the device is not recognized as an Audio Device.

[ 4701.664414] usb 1-5: new full-speed USB device number 11 using xhci_hcd
[ 4701.816379] usb 1-5: New USB device found, idVendor=0763, idProduct=2808
[ 4701.816390] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4701.816396] usb 1-5: Product: Unknown
[ 4701.816401] usb 1-5: Manufacturer: Unknown

To have the device recognized, it is required to load an updated firmware into it. Therefore two tools exist: fxload and madfuload.

While madfuload can read in a binary file, the newer fxload requires a INTELHEX file. It is possible to convert a binary file into a INTELHEX file, so these two tools are basically the same. fxload is part of OpenSuse repositories and can be installed from there. madfuload seems to be outdated, but its source package can still be downloaded

I installed madfuload from source:

  tar xvzf madfuload-1.0.tar.gz
  cd madfuload-1.0/
  ./configure 
  make

madfuload requires to give the path in USB device tree with ‚-D‘ option. To get the name of the device, use lsusb:

dennis@linux-h3a7:~> lsusb

...
Bus 001 Device 021: ID 0763:2808 M-Audio 
...

This means the path is /dev/bus/usb/001/021. Then load the firmware (as root):

sudo ./madfuload -f ma008100.bin -vvv -D /dev/bus/usb/001/021 -3
 ma008100.bin: 5675 bytes read successfully
 reading device descriptor …
 interface descriptor 0:0
 DFU interface is 0
 DFU descriptor found
 transfer size is 64
 waiting 32 ms
 cannot reset device: (19) No such device

/usr/sbin/hwinfo –sound

Check availability of hardware:

36: USB 00.1: 0401 Multimedia audio controller
  [Created at usb.122]
  Unique ID: NwzV.rkmn5HwiMPD
  Parent ID: k4bc.2DFUsyrieMD
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.1
  SysFS BusID: 1-5:1.1
  Hardware Class: sound
  Model: "M-Audio Ozone"
  Hotplug: USB
  Vendor: usb 0x0763 "M-Audio"
  Device: usb 0x2008 "M-Audio Ozone"
  Revision: "1.00"
  Speed: 12 Mbps
  Module Alias: "usb:v0763p2008d0100dc00dsc00dp00ic01isc02ip00in01"
  Driver Info #0:
    Driver Status: snd-usb-audio is not active
    Driver Activation Cmd: "modprobe snd-usb-audio"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #40 (Hub)

See line ‚Driver Activation Cmd‘ how to load the driver (as root). After that, the device is visible and can be used in e.g. audacity and other tools with name like ‚Ozone: USB Audio (hw: 0,1)‘.

sudo modprobe snd-usb-audio

It is also possible to enter the firmware load as a udev rule:

/etc/udev/rules.d/42-midisport-firmware.rules

# Using madfuload
ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="763/2808/*", RUN+="/usr/local/sbin/madfuload -l -3 -f /usr/local/share/usb/maudio/ma008100.bin -D $env{DEVNAME}"
# Using fxload with two ihx files, one 'loader' and one 'firmware' file
ACTION=="add", SUBSYSTEM=="usb", DEVPATH=="/.0", ENV{PRODUCT}=="763/2808/", RUN+="/sbin/fxload -s /usr/local/share/usb/maudio/MidiSportLoader.ihx -I /usr/local/share/usb/maudio/ma008100.ihx"

Use kmix and kmixcrtl to check the sound card availability, order and more things.

After this basic integration into Linux audio layer, the keyboard can be used as any other audio device.

Upgrade meiner Solo Electra mit LiFePo-Akku, aktuellem Motor und Controller

Ich habe in 2012 meine Solo Electra restauriert. Die Elektrik habe ich damals auf dem Stand gelassen, auf dem sie gebaut wurde bzw. auf dem ich sie erhalten habe.

Dies bedeutet 24 Volt 850 Watt Motor, 2×12 Volt 50Ah Auto Akkus in Serie geschaltet und keine Motorelektronik. Mangels Motorsteuerung muss man also immer entweder Vollgas oder gar kein Gas geben. Es gibt nichts dazwischen. Damit kann man nur ruckhaft fahren, vor allem in der Stadt, wenn man einem langsamen Auto hinterherfährt ist diese Fahrweise schon unangenehm und seltsam.

Für die Akkus ist das auch nicht besonders gesund, so dass ich schon zwei Blei-Batterien mit Plattenschluss entsorgen müsste.

In 2019 soll dieses ganze veraltete Konzept durch ein aktuelles ersetzt werden.

Die Lösung besteht aus folgenden Teilen:

36 Volt 20Ah LiFePo4 Akkumulator.  Dieser Akku besitzt ein integriertes Bateriemanagement, das ihn vor Schäden durch z.B. Überstrom und Tiefentladung schützt. Der Akku gibt 40 Ampere im Dauerbetrieb ab.

Dieser Akku hält 36×20=0,72Kwh Energie. Diese Energiemenge kann weitgehend auch genutzt werden. Die alten Akkus hatten 24*50=1,2Kwh Energie, die aber nur zu ~40% genutzt werden durfte, um die Akkus nicht zu zerstören. Ich erwarte daher, trotz kleinerem Akku, keine Reichweiteneinbussen.

Der LifFePo4 Akku ist im Gegensatz zu seinem LiIon-Bruder nicht explosionsgefährdet, aber deutlich teurer (in etwa doppelter Preis). Für mein Exemplar wären rund 700 Euro fällig gewesen, ich bekomme aber ein ungenutztes Exemplar auf dem Gebrauchtmarkt für 270 Euro.

36 Volt 800 Watt Brushed Elektromotor MY1080. Dieser China-Motor wird in diversen Varianten für E-Scooter von 250..1000 Watt verkauft und hat dort seine Alltagstauglichkeit und Haltbarkeit bewiesen. Außerdem sind seine Abmessungen ganz nahe an denen des Originalmotors. Der Motor kostet rund 80 Euro bei einem deutschen Händler.

MY1080-1

Kelly Controller KDS48100E. Dieser Controller kann bei 36 (24..48) Volt bis zu 60 Ampere Dauerstrom abgeben, in Spitzen bis zu 100 Ampere. Er besitzt Anschlüsse für Hall-Sensor-Gasgriffe, Anzeigegeräte, Notabschalter etc. Er ist außerdem per RS232 konfigurierbar. Der Controller kommt aus China und kostet mit Zubehör rund 110 Dollar.

Berechnung der notwendigen Kettenritzel

Der Motor besitzt ein Ritzel nach der China-Norm T8F. Diese wird in ATVs/Quads verwendet. Man benötigt dazu eine passende Kette und ein zweites Ritzel. Diese Kombination Kette+2 Ritzel ersetzt dann den alten Riemenantrieb der Solo Electra. Dieser Antrieb geht auf die Tretwelle, von dort geht ein zweiter Kettenantrieb mittels Moped-Kette ans Hinterrad. Den zweiten Teil lasse ich unverändert, es wird also nur der Riemenantrieb durch einen Kettenantrieb ersetzt. Die Solo Electra ist ein Mofa, darf also nur 25 km/h fahren. Dies muss auch durch die neuen Ritzel sichergestellt werden.

Nachmessen des alten Antriebs ergibt:

  • Riemenantrieb: Durchmesser des Antriebrads 52mm, Durchmesser des Abtriebrads 183mm. Die Untersetzung ist bei einem Riemenantrieb der Teiler der Durchmesser, hier also 52/183.
  • Kettenantrieb: Antriebsritzel 13 Zähne, Radritzel 50 Zähne. Die Untersetzung ist bei einem Kettenantrieb das Verhältnis der Zähne, hier also 13/50.
  • Die Gesamtuntersetzung ist damit 52*13/(183*50) = 1/13,5.

Ich habe das auch direkt am Fahrzug überprüft, indem ich die Motorwelle 13,5-mal gedreht habe. Dann dreht sich das Hinterrad genau 1 mal.

Anhand des Raddurchmessers (0,415m) kann man berechnen, dass dieses Rad bei 320 U/min fast genau 25 km/h fährt. Man kann rückrechnen, dass dann der alte Motor mit 4315 U/min laufen muss und an der Tretwelle 1231 U/min anliegen.

Diesen Wert, 1231 U/min an der Tretwelle, muss auch der neue Motor maximal erreichen. Das Motorritzel hat 11 Zähne. Damit kann man berechnen, dass das Abtriebsritzel an der Tretwelle 25,02 Zähne haben muss. Ein Ritzel mit 25 Zähnen ist damit ideal.

Leider sind nicht alle Zahnwerte für T8F-Ritzel am Markt einfach verfügbar, in Deutschland gibts maximal 20 Zähne, ich finde aber einen chinesischen Händler der 25 Zahn Ritzel verkauft.

Das Ritzel passt so wie es ist erst einmal nicht auf die Tretwelle, muss also aufgebohrt werden. Außerdem muss die Riemenscheibe durch dieses neue Ritzel ersetzt werden.

Rohlinge der Zahnräder und des Achsaufsatzes.

Der neue Motor eingebaut:

Ausdrehen der Zahnräder

Um die Zahnräder in der Drehmaschine einspannen zu können, habe ich Alurohre gekauft, die etwas geringeres Durchmesser als die Zahräder haben. Diese wurden aufgesägt und um die Zahnräder herumgespannt. Dann lassen sich die Zahnräder gut einspannen. Zentriert wurde mittels Meßuhr auf die vorhandene Bohrung.

Ausdrehen des kleineren Ritzels

Alles fertig gedreht.

Die beiden Zahnräder wurden mit dicken Schweisspunkten auf das Achslager aufgeschweisst.
Hier ist das Achslager schon montiert, die Kette zum Hinterradantrieb bereits wieder aufgelegt. Die Kette vom Motor zum Achslager muss noch passend gekürzt werden.

Das Kettenschloß an der gekürzten Kette
Beide Ketten betriebsbereit.

Elektrik