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.
  • 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
Schöne Maschine, gefällt mir sehr - Ultrabook, aber mit Thinkpad-Tugenden. Zunächst habe ich erstmal die Platte getauscht: 500Gb raus 1.5 TB rein. Dann LINUX installiert (Debian Jessie). Auf dem Weg dahin hat es zwar ein paarmal gehakt, aber letztlich habe ich alles zum Laufen bekommen und mag die Kiste schon sehr gern. Eigentlich habe ich nur zwei Punkte die ich zu bemängeln habe:
  • 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...
Bezüglich des ersten Punkts  muss ich zugeben, dass das neue Riesen-Touchpad echt gut ist. Früher habe ich den Touchpad immer deaktiviert, weil ich ihn eh nicht brauchen konnte und er beim Tippen stört. Dieser ist aber echt nützlich und mittels synaptiks habe ich ihm beigebracht, inaktiv zu werden, sobald ich zu tippen anfange. So kann man ganz gut arbeiten.

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

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.



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.

i

 

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


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:

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.

Die Kontrahenden

  1. Atmel STK500
    Der Klassiker unter den AVR Evaluation boards. Auch als ISP zu gebrauchen.
  2. 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.
  3. 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.
  4. 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.
  5. USBasp Chinaböller (mit stk500 firmware)
    gleiche Hardware wie 3. aber mit der stk500 Firmware des usb-avr-lab
  6. 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:
  1. Diamex ERFOS-PROG-S
    read      2.9s  (11.3 kB/s)
    verify    0.2s
    write     0.28s  (8.14 kB/s)
  2. Chinaböller (USBasp)
    read      5.25s  (6.24 kB/s)
    verify    0.37s
    write     0.46s  (4.95 kB/s)
  3. Diamex/Stange ISP-PROG
    read      6.3s  (5.2 kB/s)
    verify    0.45s
    write     0.55s  (4.15 kB/s)
  4. Chinaböller (stk500v2)
    read    17.7s  (1.85 kB/s)
    verify    1.24s
    write     3.56s  (0.64 kB/s)
  5. Atmel STK500
    read      41.6s  (0.79 kB/s)
    verify     2.90s
    write      3.17s  (0.72 kB/s)
  6. 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!