Archiv

Elektronik

Sharkoon Luminous Keyboard III SE Ich wollte meine geliebte alte Tastatur (siehe Bild) in mein neues Rechner-Setup mitnehmen, wo es keine PS/2-Steckplätze mehr gibt, aber ein es gab ein fürchterliches Problem mit dem PS/2-USB-Adapter: Die Taste mit den Zeichen <, > und | (kleiner als und größer als, oder auch spitze Klammern, sowie das Pipe-Zeichen) funktionierte nicht, was eine Tastatur für ein Linux-System natürlich unbrauchbar macht. Nicht nur kam der Tastendruck nicht im System an, wie ich mit xev überprüft habe, sondern er wurde offenbar gar nicht an den Rechner übertragen – auch im BIOS hatte die Taste keine Funktion. Eine Recherche zeigte, dass es offenbar große Qualitätsunterschiede zwischen verschiedenen PS/2-auf-USB-Adaptern gibt, und dass hierin die Ursache für das Problem liegen könnte.

Foto von einem Stecker-Adapter mit einem weiblichen PS/2- und einem männlichen USB-A-Stecker.Es gibt zwei grundlegende Typen von solchen Adaptern: passive und aktive. Links ist ein passiver Adapter zu sehen, der einfach nur ein Stecker mit passenden Pin-Verbindungen ist. Offenbar funktioniert diese Methode wohl ganz passabel, aber mit Abstrichen im Detail. [Passive Adapter funktionieren in der Regel nur, wenn sie zu einer Tastatur mitgeliefert wurden. Danke an Arno für die Erklärung in den Kommentaren!] Bessere Ergebnisse liefern aktive Umwandler, welche die Signale elektronisch aufarbeiten.

IMAG0196Einen solchen aktiven Adapter hatte ich – nämlich das rechts gezeigte No Name-Produkt. Der Haken an diesem Adapter – und vielen seiner Art – ist aber, dass er auf Amerikanische Tastaturen ausgelegt ist. US-Tastaturen haben (seit es die Windows-Tasten gibt) 104 Tasten. Da es auf den deutschen Tastaturen, wo Ä, Ü, Ö und ß auch noch untergebracht werden müssen, etwas gedrängter zugeht, haben deutsche Tastaturen 105 Tasten. Zwischen unserem Y und der linken Shift-Taste befindet sich die Taste mit <, > und |, wo auf der US-Tastatur überhaupt keine Taste mehr ist (siehe diesen Wikipedia-Artikel). Mein No Name-Adapter weiß nichts davon und übersetzt die 105. Taste deshalb nicht.

Das Problem ist sehr schwach dokumentiert, zum einen weil es nur ziemlich alte Hardware betrifft, und zum anderen weil es im englischen Sprachraum nicht auftritt.

Zu einem bestimmten Adapter der Marke Belkin gab es aber ermutigende Kommentare auf einer Shopping-Seite:

Nach mehreren untauglichen Adaptern verschiedener Hersteller und der Erfahrung, dass eine Tastatur ohne funktionierender größer/kleiner/Pipe-Taste ein Graus ist, hat mich dieser Adapter vor der einer neuen Ergo-Tastatur bewahrt.

und

Auf beiden Betriebssystemen werden alle Zeichen der Tastatur erkannt, auch die bei den Stecker-Adaptern als nicht funktionierend bemängelten spitzen Klammern (< >) usw..

Glücklicherweise gibt es diesen Adapter bei Conrad im Laden zu kaufen: BELKIN USB/PS2 ADAPTER im Conrad Online Shop (Foto unten). Der Preis von 15€ ist zwar happig, aber mir ging es schließlich nicht um die günstigste Lösung, sondern darum, meine alte Tastatur zu behalten.

IMAG0194Also bin ich mit der Tastatur und meinem Laptop zum Conrad getingelt. Der Verkäufer hat zwar mein Problem nicht verstanden, war aber so freundlich den Adapter für mich auszupacken und ihn mich ausprobieren zu lassen. Er schaute nicht schlecht, als ich meine speckige alte Tastatur und meinen Laptop ausgepackt habe, aber es freute ihn, dass ich mich nach einem wenige Sekunden dauernden Test zum Kauf entschieden hatte.

Fazit: Aktiver PS/2-USB-Adapter ist nicht gleich aktiver PS/2-USB-Adapter. Nur höherwertige Produkte übersetzen auch die 105. Taste auf deutschen Tastaturen. Der Adapter von Belkin mit der Produktnummer F5U119CPE ist so einer und rettet damit rüstigen, alten PS/2-Tastaturen den Arbeitsplatz.

Mit geringen Materialkosten konnte ich anhand einer alten Vorlage einen Schaltkreis bauen, mit dem der übliche Line-Tonausgang von Laptops, MP3-Geräten u.A. an einem Phono-Eingang funktioniert. Kommerzielle Produkte mit dem gleichen Zweck (wie dieses und dieses) kosten mit €20–23 das doppelte bis dreifache.

Alles fing damit an, dass wir in der Hamburger Piraten-Geschäftsstelle eine Stereoanlage stehen haben, die nur einen Phono-Eingang hat. Man konnte seinen Rechner dranhängen, aber das Signal war massiv übersteuert, besonders für die niedrigen Frequenzen. Die Lautstärke der Anlage sowie die tiefen Frequenzen per Equalizer stark runterzuregeln machte den Ton erträglich und verständlich, aber alles andere als schön.

@sl80 erinnerte sich an einen alten Konverter-Schaltkreis, der im Internet beschrieben ist und schlug vor, ihn selbst zusammenzubauen. Der Schaltkreis ist seinerseits eine vereinfachte Version von einem, der in der Zeitschrift Elektor Electronics veröffentlicht wurde (siehe Artikel).

Line signal to phono input (MD/MC) converter by Tomi Engdahl (1995)Alle erforderlichen Teile konnte ich ohne Bestellung einfach bei CONRAD am Bauteile-Tresen mitnehmen (mit Ausnahme des 147 kΩ-Widerstands, für den auch ein 150 kΩ-Widerstand funktioniert). Hier ist eine Liste der Teile:

Benötigte Teile
Bauteil Art.-Nr. Preis
2x Widerstand 1 MΩ 403610 € 0,10
2x Widerstand 150 kΩ 403512 € 0,10
2x Widerstand 68 kΩ 403474 € 0,10
2x Widerstand 470 Ω 403210 € 0,10
2x Kondensator 2,2 nF 453021 € 0,24
4x Kondensator 1,5 nF 453013 € 0,24
2x Cinch-Buchse (1x rot, 1x schwarz) 734157 € 1,58
Summe € 5,40
Optionale Teile
Experimentierkarte (nur zum Teil verbaut) 529632 € 2,47
Kunststoff-Gehäuse (schwarz) 522635 € 3,07

Soll kein vorhandenes Kabel „geopfert“ werden, um als Ausgangskabel für den Filter zu dienen, kommen noch ca. 1 m Kabel und zwei Cinch-Stecker für zusammen etwa € 3–4 dazu. An Werkzeug hatte ich nur das Übliche: Lötkolben, dritte Hand usw. Einzige Besonderheit war ein Schälbohrkopf, mit dem sich hervorragend Löcher für die Cinch-Buchsen in das Plastik-Gehäuse bohren ließen.

Der erste Prototyp, der für einen Kanal wie gewünscht funktionierte, sah so aus:

Dann wurde ein kleines Stück der Platine etwas enger mit den Teilen für zwei Kanäle bestückt, das Gehäuse mit den entsprechenden Löchern versehen und die Anschlüsse verkabelt:

Als Finishing habe ich die Unterseite der Box durch ein Stück transparentes Plastik ersetzt, damit man die Awesomeness sehen kann 😀 Aufkleber oben drauf, fertig!

Endlich guter Sound in der Geschäftsstelle! \o/

A little over a year ago, serious problems were reported when using Arduino Uno and other Arduino boards for serial communication on Linux systems, most reports regarding various Ubuntu variants from versions 9.10 through 10.10, including 64bit versions. Since this problem has not popped up much recently, I suspect that newer boards don’t have this problem anymore. However, I recently had to deal with Arduino Uno boards bought circa in mid-2010, so I ran straight into these troubles. Read below for a detailed description of the symptoms.

A few weeks after the problem was reported, a firmware upgrade with a fix was published. An article was posted on arduino.cc describing the problem and how to fix it. In order to understand what the problem is and how it is fixed in principle, you should first read this article at arduino.cc describing the problem and their proposed fix.

The instructions posted on arduino.cc require you to solder a resistor to the back of your Arduino in order to flash the DFU bootloader. However, there is another way, as outlined in this forum thread at arduino.cc, describing how fix the problem without having to solder on their board. I cannot say whether this way is safer or not, so (as always) read everything carefully and proceed at your own risk!

On a calming note, the author of the Uno’s USB stack says in a forum post:

“it is impossible to break your board permanently if upgrading through the DFU bootloader”

On a frightening note, the wire-touching procedure described below is commented thusly:

“Be careful with the second wire as the capacitor is quite near a 5v track. You can try using a low-value resistor instead of a wire if you are worried about blowing up your board.”

Have you made up your mind about trying this? Okay, then let’s go:

Error messages and symptoms When plugging in the Arduino, it registers normally, as reported by dmesg:

[...] cdc_acm 3-1:1.0: ttyACM0: USB ACM device

However, when the Arduino is running a skech that uses even trivial serial communication, the TX LED hangs, and the Arduino IDE reacts very slowly to menu clicks (especially when trying to open the Tools menu). When trying to start the Serial Monitor, the IDE will hang for a moment and finally report errors like this:

processing.app.SerialNotFoundException:
Serial port '/dev/ttyACM0' not found. Did you select the right one
from the Tools > Serial Port menu?

I’m not 100% sure, but I think I also saw the following error message in this context:

avrdude: stk500_recv(): programmer is not responding

When the serial interface dies, dmesg will report this:

[...] tty_port_close_start: tty->count = 1 port count = 0.

If you want to upload a ‘safe’ sketch (i.e. one without serial communication), so as to make the board temporarily usable again, you have a few chances:

  1. Use a Windows machine to upload a new sketch.
  2. Reload the cdc_acm kernel module that creates the ttyACM* device nodes (or just reboot your machine) and reconnect, then use some timing and feeling to upload the sketch with the IDE shortly after the Arduino boots.
  3. Play around with the Reset button on the Arduino board and use some timing and feeling to upload a new sketch.

Of course, that’s no real solution. So let’s get to fixing the board.

Downloading the firmware and preparing to flash You will need a tool called dfu-programmer. This is available fromthe Ubuntu repositories, but reports say you should have at least version 0.5.1. If can only get an older version from a repository, you should at least be able to compile 0.5.1 if you have the lubusb-dev package.

Get the right firmware code for your board from this page by selecting the correct board version (‘Arduino-usbserial-uno.hex’ or ‘Arduino-usbserial-mega.hex’), then save the file linked from the “Raw” button at the top right of the code display.

Putting the Arduino board in DFU mode and flashing This requires two short (about 5 centimeters or 2 inches) pieces of wire and two steady hands. First, put both wires into the GND sockets as shown in the picture. Then connect the board with a USB cable, then first hold the upper wire to the contact as shown, while touching and releasing the lower wire the the left side of the indicated capacitor:
Update: Contrary to what is pictured here, it seems that at least for some Arduino Mega 2560, the second wire is not required. Try just connecting the first wire as shown, and if the Arduino enters dfu mode immediately (see below for how to tell), you’re good without needing to connect the second wire.

The LED labelled “L” may give two short blinks, unless the board is running a sketch that uses the “L” LED. Even though it may seem like the Arduino is just normally running its sketch, if you have executed the procedure correctly, the Arduino is now in DFU mode. You can verify this by examining the output of lsusb. Instead of reporting with ID 2341:0001 as usual, the Arduino will report with ID 03eb:2ff7 Atmel Corp. if it is in DFU mode. When you have made sure the board is in DFU mode, run:

  1. sudo dfu-programmer at90usb82 erase
    1. the RX LED will come on and stay on
  2. sudo dfu-programmer at90usb82 flash –debug 1 Arduino-usbserial-uno.hex
    1. use the correct filename that corresponds to your board’s firmware!
    2. dfu-programmer should output something like:
      Validating...
      4058 bytes used (49.54%)
    3. the TX LED will come on and stay on, so now RX and TX will be glowing
  3. sudo dfu-programmer at90usb82 reset
    1. All LEDs are now off.

Now, unplug the Arduino and wait a second. After this, everything should work smoothly, even serial-heavy sketches!

Good luck, have fun and don’t hesitate to post a comment if you have new/more precise information!