In meinem letzten Post hatte ich ja voller Stolz von meinem neuen Thinkpad erzählt. Inzwischen haben sich ein paar Dinge ereignet, die meine Begeisterung etwas dämpfen. Kurz nach dem Post war das Ding tot – mausetot. Der freundliche Inder von der Lenovo Hotline konnte nicht helfen und so wurde das gute Stück eingeschickt und hat offenbar eine neues Motherboard bekommen. Heute war nun der große Tag, an dem ich das Gerät wieder entfenstert habe. Plattentausch ging wieder problemlos und die Debian-Installation war flugs erledigt. Doch als ich dann in das frische System booten wollte, kam die Ernüchterung: das Ding bleibt wieder beim Booten im Splashscreen stecken und ich komme nichtmal mehr ins BIOS Setup - genau wie beim letzen mal. Megagrumpf!
Das gibt's doch nicht! Wie kann das sein? Zweimal hintereinander?!? Ein wenig Web Recherche hat mir dann die Augen geöffnet - Lenovo hat offenbar das UEFI-boot Problem, das auch bei Samsung Laptops schon so manchen Brick verursacht hat in seinem BIOS noch nicht behoben! D.h. man kann sein Motherboard zerstören, indem man eine neue Platte einbaut, LINUX installiert oder wasweißichnoch. Wäre mir das bewusst gewesen, hätte ich offenbar durch geeignete BIOS-Settings (UEFI Boot komplett disabeln) vorbeugen können. Und irgendwann hätte man dann ein hoffentlich gepatchted BIOS flashen können ...
Im Nachhinein wird mir nun einiges klar: Beim ersten mal hatte ich im BIOS Setup UEFI und legacy boot zugelassen. LINUX lief einwandfrei und auch die getauschte Platte war kein Problem - bis zu dem Moment, als ich von einer externen Festplatte booten wollte und versehentlich den UEFI-Boot ausgewählt hatte. Diesmal hatte ich im BIOS noch gar keine Änderungen vorgenommen und so hat das Teil versucht, von der frisch installierten Platte im UEFI-Modus zu booten.
Also werde ich am Montag wieder mit dem freundlichen Inder telefonieren und UPS wieder neuen Umsatz bescheren...
Unsere Plattform für Ideen, Austausch, Sammlung und Dokumentation von Elektronikprojekten und diversen anderen interessanten Dingen... Arduino, Raspberry Pi, Robotik, etc.
Samstag, 8. März 2014
Sonntag, 26. Januar 2014
Wo zum Geier ist der blöde Windows Product Key?
Nachdem mein Thinkpad T61p nun echt langsam sehr alt wird habe ich mir ein neues Notebook angeschafft: ein Thinkpad T440s.
Auf dem Rechner war ein Windows 8 64bit dabei. Nun will ich ja primär unter LINUX arbeiten. Das Windows kommt dann bei Gelegenheit in die Virtualbox. Damit habe ich es grade nicht eilig, aber ich wollte mir dafür schonmal den Product Key aufschreiben, damit ich ihn dann zur Hand habe. Nur wo ist der? Früher war der ja gewöhnlich in Form eines Aufklebers irgendwo auf dem Gehäuse zu finden. Offenbar hat sich das mit Win8 geändernt - jedenfalls konnte ich keinen finden. Etwas Suche im Netz bestätigte das und ich fand heraus, dass der Key nun im BIOS gespeichert sei. Toll - und wie finde ich den nun???
> sudo acpidump
[...]
MSDM @ 0x00000000BCE42000
0000: 4D 53 44 4D 55 00 00 00 03 06 4C 45 4E 4F 56 4F MSDMU.....LENOVO
0010: 54 50 2D 47 4A 20 20 20 70 21 00 00 50 54 45 43 TP-GJ p!..PTEC
0020: 02 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ................
0030: 00 00 00 00 1D 00 00 00 xx xx xx xx xx 2D xx xx ........xxxxx-xx
0040: xx xx xx 2D xx xx xx xx xx 2D xx xx xx xx xx 2D xxx-xxxxx-xxxxx-
0050: xx xx xx xx xx xxxxx
[...]
Voila - da ist er ja, der Key :-)
> sudo hexdump -C /sys/firmware/acpi/tables/MSDM
Und wer weniger Wert auf Hexdump-Ästhetik legt, kann stattdessen auch einfach cat verwenden - weniger hübsch, aber in Sachen Product Key genauso geeignet.
- Intel Core i7-4600U CPU
- 12GB RAM
- 500GB Hard Disk
- 16GB NGFF SSD
- Intel/NVIDIA GeForce GT 730M Kombi; HDMI+VGA
- Full-HD non-glare TFT
- Ethernet, WLAN, WAN, Bluetooth
- 3xUSB3.0, SD-Card-Reader, Fingerprint-reader
- und natürlich mein geliebtes US-Tastaturlayout
- Wo sind die Maustasten für den Trackpoint geblieben???
ohne die ist der TP fast nicht zu gebrauchen, denn wenn der Touchpad aktiv ist ist das Daumen-Tappen einfach zu unpräzise und der Mauszeiger rutscht einem weg. Das ist echt nicht toll gelöst! - Es wurde im Netz schon viel über das neue Tastatur-Layout gemeckert. Insgesamt finde ich es nicht schlecht. z.b. hatte ich schon immer PageUp/Down auf die nutzlosen Forward/Back Tasten neben den Cursportasten gelegt und finde das total praktisch. Nur die Anordnung von Home/End/Insert/Delete ist echt nicht sehr ergonomisch. Da muss ich jedes mal innehalten und genau schauen, wo ich draufdrücken muss. Aber vielleicht schleift sich das ja bald ein...
Auf dem Rechner war ein Windows 8 64bit dabei. Nun will ich ja primär unter LINUX arbeiten. Das Windows kommt dann bei Gelegenheit in die Virtualbox. Damit habe ich es grade nicht eilig, aber ich wollte mir dafür schonmal den Product Key aufschreiben, damit ich ihn dann zur Hand habe. Nur wo ist der? Früher war der ja gewöhnlich in Form eines Aufklebers irgendwo auf dem Gehäuse zu finden. Offenbar hat sich das mit Win8 geändernt - jedenfalls konnte ich keinen finden. Etwas Suche im Netz bestätigte das und ich fand heraus, dass der Key nun im BIOS gespeichert sei. Toll - und wie finde ich den nun???
Zwar mangelt es nicht an guten Ratschlägen und kleinen Tools unklarer Herkunft wenn man aus einem laufenden Win8 System heraus den Key auslesen möchte, aber das hilft mir nun nicht wirklich weiter. Also weitersuchen - Microsoft dokumentiert das Verfahren im Dokument Microsoft Software Licensing Tables ausführlich. Bei der Gelegenheit habe ich gelernt, dass diese Methode schon seit Windows Vista unterstützt wird. In dem Dokument wird dargelegt, dass die entsprechende Information in speziellen ACPI-Tables namens SLIC und MSDM abgelegt wird. Der für uns hier relevante ist hier MSDM Table mit folgendem Aufbau:
Offset length Description
0 4 signature
4 4 length
8 1 revision
9 1 checksum
10 6 OEM ID
16 8 OEM table ID
24 4 OEM revision
28 4 Creator ID
32 4 Creator revision
36 variable Software licensing structure
Gut - aber wie komme ich da ran? Ich habe mal im Package manager gesucht:
> aptitude search "?description(ACPI tables)"
i A acpica-tools - ACPICA tools for the development and debug of ACPI tables
i A acpica-tools - ACPICA tools for the development and debug of ACPI tables
Das klingt gut! Und diese Paket enthält unter anderem dies:
acpidump - ACPI table dump utility
Das klingt perfekt! Und so fand ich dies:
> sudo acpidump
[...]
MSDM @ 0x00000000BCE42000
0000: 4D 53 44 4D 55 00 00 00 03 06 4C 45 4E 4F 56 4F MSDMU.....LENOVO
0010: 54 50 2D 47 4A 20 20 20 70 21 00 00 50 54 45 43 TP-GJ p!..PTEC
0020: 02 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ................
0030: 00 00 00 00 1D 00 00 00 xx xx xx xx xx 2D xx xx ........xxxxx-xx
0040: xx xx xx 2D xx xx xx xx xx 2D xx xx xx xx xx 2D xxx-xxxxx-xxxxx-
0050: xx xx xx xx xx xxxxx
[...]
Voila - da ist er ja, der Key :-)
Nachtrag
Inzwischen habe ich noch einen zweiten, noch einfacheren, Weg entdeckt:> sudo hexdump -C /sys/firmware/acpi/tables/MSDM
Und wer weniger Wert auf Hexdump-Ästhetik legt, kann stattdessen auch einfach cat verwenden - weniger hübsch, aber in Sachen Product Key genauso geeignet.
Samstag, 4. Januar 2014
FabLab Regensburg
Eigentlich wollte ich nur einen Dienstleister für einen kleinen Lasercutter-Auftrag finden (Sick of Beige Case Variante für meinen Bus Pirate) bin dann aber bei der Suche auf etwas viel Spannenderes gestoßen: Es gibt in Regensburg neuerdings ein FabLab! Und um den Zufall perfekt zu machen, war dort heute Tag der offenen Tür. Also habe ich spontan beschlossen mal hinzufahren und mir das anzusehen.
Trotz trübem Wetter waren eine Menge Leute gekommen und die Bude war entsprechend voll. An allen Stationen wurde gefachsimpelt, diverse Objekte bestaunt und einfach Erfahrungen ausgetauscht – ein recht buntes Völkchen hatte sich versammelt.
Und einen größeren, basierend auf einer Kinect, mit dem heute Personen in 3D-Modelle verwandelt und anschließend ausgedruckt wurden:
In der Ecke fand ich dann den Lasercutter, der gerade damit beschäftigt war, kleine Teile für Spielwürfel-Bausätze aus Sperrholz zu schneiden. Letztere fanden v.a. bei den zahlreich erschienenen Kindern großen Anklang.
Und da ich ein File für mein SickofBeige Gehäuse in der Hosentasche hatte habe ich mal diesen netten Herrn davon überzeugt, zwischendurch mal was mit Acryl zu machen ;-)
Hier ist die Vorlage schon mal geladen:
Und hier ist der Cutter fleißig dabei, mein Gehäuse zu schneiden:
Trotz trübem Wetter waren eine Menge Leute gekommen und die Bude war entsprechend voll. An allen Stationen wurde gefachsimpelt, diverse Objekte bestaunt und einfach Erfahrungen ausgetauscht – ein recht buntes Völkchen hatte sich versammelt.
3D Printer
Das FabLab hat zwei 3D-Drucker: einen von Fabbster und (zu meiner großen Freude) einen Ultimaker 2. Letzteren habe ich nämlich schon eine Weile auf meiner persönlichen Wunschliste.
3D Scanner
Und damit die Drucker auch was zu tun haben gab es zwei 3D-Scanner. Einen für kleine Gegenstände:Und einen größeren, basierend auf einer Kinect, mit dem heute Personen in 3D-Modelle verwandelt und anschließend ausgedruckt wurden:
Lasercutter
Und da ich ein File für mein SickofBeige Gehäuse in der Hosentasche hatte habe ich mal diesen netten Herrn davon überzeugt, zwischendurch mal was mit Acryl zu machen ;-)
Hier ist die Vorlage schon mal geladen:
Und hier ist der Cutter fleißig dabei, mein Gehäuse zu schneiden:
Fazit
Der kleine Ausflug hat sich gelohnt. Ich glaub, da geh ich öfter mal hin, wenn ich als Ergänzung zu einem Elektronikprojekt mal was geschnittenes oder gedrucktes brauche.Mittwoch, 1. Januar 2014
ISP-Adapter Wettrennen
Inzwischen haben sich in meiner Bastelkiste diverse AVR ISP-Adapter angesammelt und so bin ich auf den Gedanken gekommen, mal ein Wettrennen zwischen den Geräten zu veranstalten.
Wir werden mit avdude den Flash Speicher eines Arduino Duemillanove auslesen, gegen das erhaltene File verifizieren und schließlich das Hexfile wieder in den µC flashen. Praktischerweise gibt avrdude auch gleich an, wie lang eine Operation gedauert hat. Für den ISP-PROG sieht das entsprechenede Kommando (read flash) dann so aus:
$ avrdude -p m328p -c stk500 \\
-P /dev/ttyACM0 -U flash:r:foo.hex:r
avrdude: AVR device initialized and ready to accept instructions
Reading |###################################| 100% 0.02s
avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:
Reading |###################################| 100% 6.34s
avrdude: writing output file "foo.hex"
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Ich habe jede Operation (r/v/w) mit jedem Programmer 3x ausgeführt und die Zeiten haben maximal in der letzten signifikanten Stelle um ± 1 differiert.
Die aktuell auf dem ATmege328p des Arduinos befindliche Firmware liefert ein raw-Hex File von 2280 Byte. Beim Lesen des Flash Speichers werden aber offenbar die kompletten 32kB des Controllers gelesen – daher die große Abweichung zwischen den verschiedenen Operationen.
Für den Hobbybereich ist die Geschwindigkeit natürlich komplett wurscht, aber interessant finde ich es dennoch. Der Chinaböller landet auf alle Fälle in meinem Bastelkit für unterwegs!
Die Kontrahenden
- Atmel STK500
Der Klassiker unter den AVR Evaluation boards. Auch als ISP zu gebrauchen. - Diamex/Stange ISP-PROG
stk500v2 kompatibel und bisher mein Standard-Programmer. Mit 2 DIP-Switches kann man die Versorgungsspannung ein bzw. ausschalten und von 5V auf 3.3V umstellen. - Diamex ERFOS-PROG-S
Ebenfalls stk500v2 kompatibel. Keine Spannungsversogung des Hosts. Signalpegel 3.3V. Er kann neben AVR auch STM32 und NXP/LCP µC programmieren und als USB2UART Adapter verwendet werden. - USBasp Chinaböller (mit modifizierter USBasp Firmware)
Wie im letzten Post beschrieben: super kleiner und recht solider USBasp-clone mit kleinen Hardware-Differenzen. 5V Versorgungsspannung. - USBasp Chinaböller (mit stk500 firmware)
gleiche Hardware wie 3. aber mit der stk500 Firmware des usb-avr-lab - Bus Pirate v3.6
Das Schweizer Taschenmesser der digitalen Kommunikation. Eigentlich kein ISP Adapter, aber avrdude unterstützt ihn trotzdem – vermutlich in einer Art bitbanging mode.
Methode
Wir werden mit avdude den Flash Speicher eines Arduino Duemillanove auslesen, gegen das erhaltene File verifizieren und schließlich das Hexfile wieder in den µC flashen. Praktischerweise gibt avrdude auch gleich an, wie lang eine Operation gedauert hat. Für den ISP-PROG sieht das entsprechenede Kommando (read flash) dann so aus:
$ avrdude -p m328p -c stk500 \\
-P /dev/ttyACM0 -U flash:r:foo.hex:r
avrdude: AVR device initialized and ready to accept instructions
Reading |###################################| 100% 0.02s
avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:
Reading |###################################| 100% 6.34s
avrdude: writing output file "foo.hex"
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Ich habe jede Operation (r/v/w) mit jedem Programmer 3x ausgeführt und die Zeiten haben maximal in der letzten signifikanten Stelle um ± 1 differiert.
Die aktuell auf dem ATmege328p des Arduinos befindliche Firmware liefert ein raw-Hex File von 2280 Byte. Beim Lesen des Flash Speichers werden aber offenbar die kompletten 32kB des Controllers gelesen – daher die große Abweichung zwischen den verschiedenen Operationen.
Siegerehrung
Hier die Ergebnisse in absteigender Geschwindigkeit:- Diamex ERFOS-PROG-S
read 2.9s (11.3 kB/s)
verify 0.2s
write 0.28s (8.14 kB/s) - Chinaböller (USBasp)
read 5.25s (6.24 kB/s)
verify 0.37s
write 0.46s (4.95 kB/s) - Diamex/Stange ISP-PROG
read 6.3s (5.2 kB/s)
verify 0.45s
write 0.55s (4.15 kB/s) - Chinaböller (stk500v2)
read 17.7s (1.85 kB/s)
verify 1.24s
write 3.56s (0.64 kB/s) - Atmel STK500
read 41.6s (0.79 kB/s)
verify 2.90s
write 3.17s (0.72 kB/s) - Bus Pirate
read 126s (0.26 kB/s)
verify 8.5s
write 9.0s (0.25 kB/s)
Fazit
Das STK500 ist überraschend lahm in vergleich zu den diversen billig-Programmern. Als USBasp schlägt sich der Chinaböller ganz gut gegen den ISP-PROG, der ERFOS-PROG-S steckt beide in die Tasche. Sehr überraschend fand ich den enormen Geschwindigkeitsabfall den der Chinaböller erlebt, wenn man die stk500 Firmware des USB-AVRlab verwendet. Und über die Geschindigkeit beim Bus Pirate schweige ich lieber ;-)Für den Hobbybereich ist die Geschwindigkeit natürlich komplett wurscht, aber interessant finde ich es dennoch. Der Chinaböller landet auf alle Fälle in meinem Bastelkit für unterwegs!
Montag, 30. Dezember 2013
Chinesischer AVR-ISP
Im Rahmen des chinesischen Advents-Kalenders habe ich u.a. eine Tüte voll USB-AVRISP Adapter gekauft. Im Gegensatz zu den meisten Programmern, die man in der Bucht findet steckt dieser in einem soliden und sehr schlanken Metallgehäuse und preiswert war er obendrein. Da er extrem klein ist, fand ich ihn perfekt als Begleiter, wenn man mal zum Basteln "on the road" ist. Hier ein Familienfoto und eine Nahaufnahme mit Flachbandkabel:
Also gleich mal anstecken:
[283553.080099] usb 5-2: new low-speed USB device number 2 using uhci_hcd
[283553.253147] usb 5-2: New USB device found, idVendor=03eb, idProduct=c8b4
[283553.253151] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[283553.253154] usb 5-2: Product: USBHID
[283553.253156] usb 5-2: Manufacturer: zhifengsoft
[283554.564881] generic-usb 0003:03EB:C8B4.0001: hiddev0,hidraw0: USB HID v1.01 Device [zhifengsoft USBHID] on usb-0000:00:1d.0-2/input0
[283554.564939] usbcore: registered new interface driver usbhid
[283554.564944] usbhid: USB HID core driver
Hm - ein HID device? Ich hatte jetzt eher mit ttyUSB oder sowas gerechnet - merkwürdig. Laut eBay Verkäufer wird das Ding von Progisp 1.72 unterstützt. Davon hab ich noch nie gehört und eine Google-Suche führt mich auf diverse, in elaboriertem Chinglish verfasste Seiten mit wenig vielversprechenden Screenshots voller fernöstlicher Schriftzeichen. Sowas will ich nicht haben, sondern meinen geliebten avrdude! Also weitersuchen. Die Beschreibung sagt etwas von USBasp - den kennt avrdude. Also testen wir das mal:
$ avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
avrdude done. Thank you.
Das war wohl nix - offenbar sollte der USBasp die ID 16c0:05dc haben und nicht 03eb:c8b4 wie mein chinesisches Kleinod (Typ: MX-USBISP-V3.00, 2013-03-15 laut silkscreen). Also mal nach der ID googeln. Aha - ich bin nicht allein mit meinem Problem: Das Ding ist zwar hardwaremäßig fast ein USBasp, aber das weiß seine Firmware nicht. Zu allem Überfluss kommt die originale USBasp Firmware nicht mit dieser Hardware klar - grumpf!
Also erst mal aufmachen - nur wie? So:
Einfach die Metallhülse in Richtung USB-Stecker schieben. Von innen bietet sich dann folgendes Bild:
Nach einiger Suche hab ich dann eine Lösung gefunden: im GreenPhotons-Blog von [uwezi] fand sich ein Eintrag zu genau dem Ding. Offenbar braucht die USBasp Firmware einen kleinen Tweak, um auf diesem Progammer zu laufen. Auf obiger Seite kann man auch eine bereits gepatchte Firmware herunterladen, falls man zu feige zum compilieren ist. Das folgende ist nicht auf meinem Mist gewachsen, ich gebe es aber hier wieder, damit zukünftige Leidensgenossen einen weiteren Anlaufpunkt bekommen:
[285378.660075] usb 5-2: new low-speed USB device number 3 using uhci_hcd
[285378.832112] usb 5-2: New USB device found, idVendor=16c0, idProduct=05dc
[285378.832122] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[285378.832129] usb 5-2: Product: USBasp
[285378.832135] usb 5-2: Manufacturer: www.fischl.de
Und auch avrdude ist nun zufrieden:
avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: AVR device initialized and ready to accept instructions
Reading |###################################| 100% 0.01s
avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:
Reading |###################################| 100% 5.26s
avrdude: writing output file "foo.dat"
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Sehr gut! Und zuguterletzt sei noch erwähnt, dass man angeblich auch mit unmodifizierter USBasp Firmware arbeiten kann, wenn man ein paar Lötbrücken vom Board entfernt - ich fand die Firmware-Modifikation aber eleganter.
Also gleich mal anstecken:
[283553.080099] usb 5-2: new low-speed USB device number 2 using uhci_hcd
[283553.253147] usb 5-2: New USB device found, idVendor=03eb, idProduct=c8b4
[283553.253151] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[283553.253154] usb 5-2: Product: USBHID
[283553.253156] usb 5-2: Manufacturer: zhifengsoft
[283554.564881] generic-usb 0003:03EB:C8B4.0001: hiddev0,hidraw0: USB HID v1.01 Device [zhifengsoft USBHID] on usb-0000:00:1d.0-2/input0
[283554.564939] usbcore: registered new interface driver usbhid
[283554.564944] usbhid: USB HID core driver
Hm - ein HID device? Ich hatte jetzt eher mit ttyUSB oder sowas gerechnet - merkwürdig. Laut eBay Verkäufer wird das Ding von Progisp 1.72 unterstützt. Davon hab ich noch nie gehört und eine Google-Suche führt mich auf diverse, in elaboriertem Chinglish verfasste Seiten mit wenig vielversprechenden Screenshots voller fernöstlicher Schriftzeichen. Sowas will ich nicht haben, sondern meinen geliebten avrdude! Also weitersuchen. Die Beschreibung sagt etwas von USBasp - den kennt avrdude. Also testen wir das mal:
$ avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
avrdude done. Thank you.
Das war wohl nix - offenbar sollte der USBasp die ID 16c0:05dc haben und nicht 03eb:c8b4 wie mein chinesisches Kleinod (Typ: MX-USBISP-V3.00, 2013-03-15 laut silkscreen). Also mal nach der ID googeln. Aha - ich bin nicht allein mit meinem Problem: Das Ding ist zwar hardwaremäßig fast ein USBasp, aber das weiß seine Firmware nicht. Zu allem Überfluss kommt die originale USBasp Firmware nicht mit dieser Hardware klar - grumpf!
Also erst mal aufmachen - nur wie? So:
Einfach die Metallhülse in Richtung USB-Stecker schieben. Von innen bietet sich dann folgendes Bild:
Nach einiger Suche hab ich dann eine Lösung gefunden: im GreenPhotons-Blog von [uwezi] fand sich ein Eintrag zu genau dem Ding. Offenbar braucht die USBasp Firmware einen kleinen Tweak, um auf diesem Progammer zu laufen. Auf obiger Seite kann man auch eine bereits gepatchte Firmware herunterladen, falls man zu feige zum compilieren ist. Das folgende ist nicht auf meinem Mist gewachsen, ich gebe es aber hier wieder, damit zukünftige Leidensgenossen einen weiteren Anlaufpunkt bekommen:
- Zunächst besorge man sich die USBasp Firmware
- Dann muß diese leicht modifiziert werden:
in main.c finden sich die Zeilen
int main(void) {
uchar i, j;
/* no pullups on USB and ISP pins */
PORTD = 0;
PORTB = 0;
/* all outputs except PD2 = INT0 */
DDRD = ~(1 << 2);
die letzte Zeile muss so verändert werden:
DDRD = 0x00; - Compilieren
- Metallgehäuse abziehen
- Auf der Unterseite der Platine finden sich zwei Kontakte, die mit "-> up <-" gekennzeichnet sind. Diese mit einem Stück Schaltdraht überbrücken. Nun ist das Ding im self-programming mode
- Mit einem anderen ISP-Programmer die neue Firmware flashen z.B.:
avrdude -p m8 -c stk500v2 -P /dev/ttyACM0 \\
-U flash:w:20130212_mega8_usbisp.hex:i - Schaltdraht-Brücke raus, Gehäuse drauf
- Fertig
[285378.660075] usb 5-2: new low-speed USB device number 3 using uhci_hcd
[285378.832112] usb 5-2: New USB device found, idVendor=16c0, idProduct=05dc
[285378.832122] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[285378.832129] usb 5-2: Product: USBasp
[285378.832135] usb 5-2: Manufacturer: www.fischl.de
Und auch avrdude ist nun zufrieden:
avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: AVR device initialized and ready to accept instructions
Reading |###################################| 100% 0.01s
avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:
Reading |###################################| 100% 5.26s
avrdude: writing output file "foo.dat"
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Sehr gut! Und zuguterletzt sei noch erwähnt, dass man angeblich auch mit unmodifizierter USBasp Firmware arbeiten kann, wenn man ein paar Lötbrücken vom Board entfernt - ich fand die Firmware-Modifikation aber eleganter.
Einsatz mit AtmelStudio
Im Gegensatz zu avrdude unterstützt AtmelStudio den USBasp nicht. Das heißt aber nicht, das der Programmer nicht dennoch zum Einsatz kommen kann! Zwei Lösungsmöglichkeiten habe ich gefunden:- Eine stk500 kompatible Firmware auf den Programmer flashen (z.B. die von Christian Ulrich).
- avrdude unter AtmelStudio als externen Programmer einbinden. Auf microcontroller.net hat user [eduardo] hat eine Anleitung dazu verfasst.
Fazit
Ein netter kleiner Programmieradapter, der nach obiger Firmware-Transplantation durchaus empfehlenswert ist.Sonntag, 22. Dezember 2013
Chinesischer Adventskalender
Es ist mal wieder so weit: Weihnachten naht! Glühwein und Lebkuchen überall und die Menschen mit den beiden X-Chromosomen wollen ständig auf Weihnachtsmärkte gehen. Aber es gibt auch Adventstraditionen für Nerds - bzw. wenn es sie nicht gibt muß man sie halt erfinden und das habe ich getan!
Ladies & Gentlemen voller Stolz präsentiere ich den chinesischen Adventskalender für Geeks. Und das geht so: So ca ab Anfang/Mitte November jeden Tag auf Ebay gehen und interessante Kleinigkeiten bei fernöstlichen Anbietern schießen. Z.B. Header-Pins, Jumper-Wires, USB2TTL Adapter, Mikrocontroller-Boards, ICSP-Adapter, Flachbandkabel, Wannensteckern, Crimpzangen, etc. etc. Und ab Anfang Dezember kommt dann fast jeden Tag der Postbotemit seinem Schlitten und man darf wieder ein Türchen Luftpolsterumschlägchen öffnen – große Freude!
Als Hintergrundmusik empfehle ich das beliebte Weihnachtslied "Stille Bucht".
Ladies & Gentlemen voller Stolz präsentiere ich den chinesischen Adventskalender für Geeks. Und das geht so: So ca ab Anfang/Mitte November jeden Tag auf Ebay gehen und interessante Kleinigkeiten bei fernöstlichen Anbietern schießen. Z.B. Header-Pins, Jumper-Wires, USB2TTL Adapter, Mikrocontroller-Boards, ICSP-Adapter, Flachbandkabel, Wannensteckern, Crimpzangen, etc. etc. Und ab Anfang Dezember kommt dann fast jeden Tag der Postbote
Als Hintergrundmusik empfehle ich das beliebte Weihnachtslied "Stille Bucht".
Freitag, 6. September 2013
Defekte USB-Festplatte heilmachen
Heute habe ich mal wieder eine kleine Repair Story. Ein Bekannter hat mir eine defekte Samsung USB-Festplatte gegeben damit ich mal schaue, ob sie noch zu reparieren ist bzw. die Daten zu retten sind.
Schon von außen konnte man das Problem schnell erkennen: die mini USB Buchse war abgerissen und zwar gründlich – die seitlichen Lötstellen hatten die Massefläche mitgenommen und die Pins hingen krumm und schief ohne Gehäuse mehr oder weniger lose an ihren Lötstellen bzw. waren komplett abgebrochen. Das wird eine leichte Datenrettung dachte ich mir. Einfach die Platte aus dem USB Gehäuse nehmen, über SATA anschließen, Daten rüberziehen und ggf. ein neues USB-Gehäuse empfehlen – falsch gedacht! Meine Überraschung war nicht gering, als ich das Gehäuse geöffnet hatte: Da war kein SATA Anschluss – diese Platte hat wirklich selbst einen USB-Anschluss – direkt auf der Platine. Sowas hatte ich bisher noch nicht gesehen. Also doch versuchen, die abgerissenen USB-Buchse zu ersetzen. Als erstes habe ich mir mal eine neue Buchse besorgt, denn die abgerissene war definitv hinüber, so dass an wieder anlöten nicht zu denken war. Hier zunächst mal ein Bild der Unfallstelle:
Das sieht echt übel aus – oder? Als erstes habe ich mal die Platine ausgebaut, um vernünftig an den Operationsbereich heranzukommen und die Pin-Reste abgelötet, das Ganze etwas entfettet etc.
Und hier mein Reparatur-Zubehör – neue Buchse und Kraftkleber:
Also erstmal mit gaaaaanz wenig Lötzinn, einem Schluck Flussmittel und ruhiger Hand die neue Buchse auflöten. Echt fummelig! Und wirklich stabil ist das auch nicht, denn normalerweise wird so eine Buchse von den 4 Masse-Lötaugen gehalten. Und da die Massepads ja weg sind geht das nicht mehr, was zudem zur interessanten Frage führt, wie ich da wieder Masse drauf bekomme.
Letztlich habe ich mit Skalpell und Glasfaserradierer ein Stück Massefläche in der Nähe freigelegt und mit einem echt hässlichen Lötzinn-Blob angeschlossen.
[12023260.948923] usb 1-1.3: new high-speed USB device number 33 using ehci_hcd
[12023261.045519] usb 1-1.3: New USB device found, idVendor=04e8, idProduct=1f0a
[12023261.045529] usb 1-1.3: New USB device strings: Mfr=1, Product=11, SerialNumber=3
[12023261.045537] usb 1-1.3: Product: Samsung S2 Portable
[12023261.045543] usb 1-1.3: Manufacturer: JMicron
[12023261.045549] usb 1-1.3: SerialNumber: 00000011E09310500334
[12023261.046516] scsi7 : usb-storage 1-1.3:1.0
[12023262.082143] scsi 7:0:0:0: Direct-Access Samsung S2 Portable 2AR1 PQ: 0 ANSI: 2 CCS
[12023262.083804] sd 7:0:0:0: Attached scsi generic sg3 type 0
[12023262.084619] sd 7:0:0:0: [sdc] 1953524736 512-byte logical blocks: (1.00 TB/931 GiB)
[12023262.085358] sd 7:0:0:0: [sdc] Write Protect is off
[12023262.085366] sd 7:0:0:0: [sdc] Mode Sense: 28 00 00 00
[12023262.086136] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.086148] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.089373] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.089383] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.120260] sdc: sdc1
[12023262.123727] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.123737] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.123745] sd 7:0:0:0: [sdc] Attached SCSI disk
Und auch die hübsche blaue Aktivitäts-LED flackert beim Zugriff fröhlich vor sich hin:
Hab die prekäre Buchse ordentlich mit dem Kraftkleber umschmiert. Für den Alltagseinsatz wird das sicher nie mehr was, aber zumindest kann man nun in Ruhe die Daten kopieren.
Schon von außen konnte man das Problem schnell erkennen: die mini USB Buchse war abgerissen und zwar gründlich – die seitlichen Lötstellen hatten die Massefläche mitgenommen und die Pins hingen krumm und schief ohne Gehäuse mehr oder weniger lose an ihren Lötstellen bzw. waren komplett abgebrochen. Das wird eine leichte Datenrettung dachte ich mir. Einfach die Platte aus dem USB Gehäuse nehmen, über SATA anschließen, Daten rüberziehen und ggf. ein neues USB-Gehäuse empfehlen – falsch gedacht! Meine Überraschung war nicht gering, als ich das Gehäuse geöffnet hatte: Da war kein SATA Anschluss – diese Platte hat wirklich selbst einen USB-Anschluss – direkt auf der Platine. Sowas hatte ich bisher noch nicht gesehen. Also doch versuchen, die abgerissenen USB-Buchse zu ersetzen. Als erstes habe ich mir mal eine neue Buchse besorgt, denn die abgerissene war definitv hinüber, so dass an wieder anlöten nicht zu denken war. Hier zunächst mal ein Bild der Unfallstelle:
Das sieht echt übel aus – oder? Als erstes habe ich mal die Platine ausgebaut, um vernünftig an den Operationsbereich heranzukommen und die Pin-Reste abgelötet, das Ganze etwas entfettet etc.
Und hier mein Reparatur-Zubehör – neue Buchse und Kraftkleber:
Also erstmal mit gaaaaanz wenig Lötzinn, einem Schluck Flussmittel und ruhiger Hand die neue Buchse auflöten. Echt fummelig! Und wirklich stabil ist das auch nicht, denn normalerweise wird so eine Buchse von den 4 Masse-Lötaugen gehalten. Und da die Massepads ja weg sind geht das nicht mehr, was zudem zur interessanten Frage führt, wie ich da wieder Masse drauf bekomme.
Letztlich habe ich mit Skalpell und Glasfaserradierer ein Stück Massefläche in der Nähe freigelegt und mit einem echt hässlichen Lötzinn-Blob angeschlossen.
Platine wieder einbauen und nun kommt also der spannende Moment! Gaaanz vorsichtig ein USB-Kabel anstecken, möglichst ohne diese fragile Buchsenkonstruktion gleich wieder abzureißen, an den Computer anschließen und hoffen, dass dessen USB-Schnittstelle nun nicht gebraten wird. Also sicherheitshalber über einen billigen USB-Hub...
Und siehe da – die Platte meldet sich![12023260.948923] usb 1-1.3: new high-speed USB device number 33 using ehci_hcd
[12023261.045519] usb 1-1.3: New USB device found, idVendor=04e8, idProduct=1f0a
[12023261.045529] usb 1-1.3: New USB device strings: Mfr=1, Product=11, SerialNumber=3
[12023261.045537] usb 1-1.3: Product: Samsung S2 Portable
[12023261.045543] usb 1-1.3: Manufacturer: JMicron
[12023261.045549] usb 1-1.3: SerialNumber: 00000011E09310500334
[12023261.046516] scsi7 : usb-storage 1-1.3:1.0
[12023262.082143] scsi 7:0:0:0: Direct-Access Samsung S2 Portable 2AR1 PQ: 0 ANSI: 2 CCS
[12023262.083804] sd 7:0:0:0: Attached scsi generic sg3 type 0
[12023262.084619] sd 7:0:0:0: [sdc] 1953524736 512-byte logical blocks: (1.00 TB/931 GiB)
[12023262.085358] sd 7:0:0:0: [sdc] Write Protect is off
[12023262.085366] sd 7:0:0:0: [sdc] Mode Sense: 28 00 00 00
[12023262.086136] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.086148] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.089373] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.089383] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.120260] sdc: sdc1
[12023262.123727] sd 7:0:0:0: [sdc] No Caching mode page present
[12023262.123737] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[12023262.123745] sd 7:0:0:0: [sdc] Attached SCSI disk
Und auch die hübsche blaue Aktivitäts-LED flackert beim Zugriff fröhlich vor sich hin:
Hab die prekäre Buchse ordentlich mit dem Kraftkleber umschmiert. Für den Alltagseinsatz wird das sicher nie mehr was, aber zumindest kann man nun in Ruhe die Daten kopieren.
Abonnieren
Posts (Atom)