LaborTageBadge2013: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
KKeine Bearbeitungszusammenfassung
K (update git location)
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 9: Zeile 9:
|platform    = AVR (ATtiny85)
|platform    = AVR (ATtiny85)
|license    = GPL
|license    = GPL
|download    = Software: [https://www.das-labor.org/usergit/labortage2011badge/ GIT]<br>
|download    = Software/Hardware: [https://github.com/das-labor/labortage2013badge GIT]<br>
Hardware: [https://www.das-labor.org/svn/hardware/labortagebadge2011 SVN]
}}
}}
==About==
==About==


Das "Ticket" der [Labortage_2013|Labortage 2013] ist dieses mal ein [http://en.wikipedia.org/wiki/HMAC-based_One-time_Password_Algorithm HOTP] Password Generator für Zwei-Faktor Authentifizierung nach [http://www.ietf.org/rfc/rfc4226.txt RFC4226], der auch als kleines USB-AVR Devkit herhalten kann. Eventuell später weitere Firmware mit anderen Funktionen :).
Das "Ticket" der [[Labortage_2013|Labortage 2013]] ist dieses mal ein [http://en.wikipedia.org/wiki/HMAC-based_One-time_Password_Algorithm HOTP] Password Generator für Zwei-Faktor Authentifizierung nach [http://www.ietf.org/rfc/rfc4226.txt RFC4226], der auch als kleines USB-AVR Devkit herhalten kann. Eventuell später weitere Firmware mit anderen Funktionen :).
   
   
Genießt das Logo der Labortage 2013 auf der einen Seite, und bestückt euch euren eigenen HOTP Generator auf der anderen.
Genießt das Logo der Labortage 2013 auf der einen Seite, und bestückt euch euren eigenen HOTP Generator auf der anderen.
Zeile 20: Zeile 19:
==Funktion==
==Funktion==


Der AVR kommuniziert mit dem PC über USB mit Hilfe der [http://www.obdev.at/products/vusb vUSB] library. Er ist mit dem [https://github.com/Bluebie/micronucleus-t85 Micronucleus] USB Bootloader vorprogrammiert. Nach der Initialisierung mit einem Seed und einem Counter, generiert er bei jedem Tastendruck ein OTP passwort, was er als USB-Tastatur direkt eingibt.
Der AVR kommuniziert mit dem PC über USB mit Hilfe der [http://www.obdev.at/products/vusb vUSB] library. Er ist mit dem [https://github.com/Bluebie/micronucleus-t85 Micronucleus] USB Bootloader vorprogrammiert.  
 
Nach dem laden der HOTP-Firmware und der Initialisierung mit einem Seed und einem Start Counter, generiert er bei jedem Tastendruck ein OTP Kennwort, was er als USB-Tastatur direkt eingibt.


==Schaltung==
==Schaltung==
Zeile 46: Zeile 47:
| R3
| R3
| SMD 0805 68 Ohm
| SMD 0805 68 Ohm
| SMD-0805 68
| SMD-0805 68R
|-  
|-  
| AVR
| AVR
Zeile 68: Zeile 69:


===Aufbau===
===Aufbau===
Der Aufbau erfordert durch die relativ dichte Bestückung in SMD und mit 0805 Bauteilen etwas Erfahrung im Löten von SMD. Wenn ihr es euch nicht zutraut, sucht euch einen Bastler der für etwas Mate Hand anlegt ;).<br>
Der Aufbau erfordert durch die relativ dichte Bestückung in SMD und mit 0805 Bauteilen etwas Erfahrung im Löten von [http://www.mikrocontroller.net/articles/SMD_L%C3%B6ten SMD]. Wenn ihr es euch nicht zutraut, sucht euch einen Bastler der für etwas Mate Hand anlegt ;).<br>
Bestückt wird zuerst C1, R1, R2, R3. Dann die beiden Dioden D1 und D2, dabei auf die Polarität achten (Der (blaue) Strick muss bei beiden zur mitte der Platine Zeigen.
Bestückt wird zuerst C1, R1, R2, R3. Dann die beiden Dioden D1 und D2, dabei auf die Polarität achten.Der (blaue) Strick muss bei beiden zur Mitte der Platine zeigen. Dann den Prozessor auflöten, die Beschriftung muss lesbar sein wenn die USB-Buchse nach Links zeigt. Nun den SMD-Taster verlöten und zum schluss die USB-Buchse. Wahrscheinlich ist an der Platinenkante ein kleiner Vorsprung, der mit einem scharfen Messer oder einer kleinen Feile entfernt werden muss.


------ todo ------
Die Stiftleiste, R4-6 und LED1 werden nicht bestückt. Diese können für Eigenen Projekte verwendet werden.


Nun die LED, deren abgeschrägte Kante auf Pad1 richtung Aussenkante-Stitleiste zeigt. Der AVR hat einen Punkt zur Markierung der mit dem Bestückungsdruck übereinstimmen muss. Zum Schluss kommen der Taster und die Mini USB Buchse. Diese deren Masseanschlüsse festbraten, und dann vorsichtig mit minimal Lötzinn die eigentlichen Pins verlöten. Die Stiftleiste wird nicht bestückt, ausser ihr last die LED weg und möchtet eine andere abgesetzt anschliessen, z.B den [[LaborTageBadge2011/DioderMod|Diodermod]].<br>
Arbeitet sorgfältig und macht immer mal wieder eine Sichtprüfung auf Kurzschlüsse und schlechte Lötstellen.
Arbeitet sorgfältig und macht immer mal wieder eine Sichtprüfung auf Kurzschlüsse und schlechte Lötstellen.


==Software==
==Software==
Der AVR ist im Bauteilesatz der Labortage vorprogrammiert, das Binary für den PC muss unter Linux noch mit libusb übersetzt werden. Für Windows kann es prinzipiell auch übersetzt werden, dies ist aber nicht getestet.<br>
Der AVR ist im Bauteilesatz der Labortage ist mit dem dem USB-Bootloader vorprogrammiert, das Binary für den PC muss unter Linux noch mit libusb übersetzt werden. Für Windows gibt es fertige binarys...


===Bauen für Linux===
===Bauen für Linux===
Debian/Ubuntu wird angenommen:<br>
==== Tools installieren ====
Gebraucht wird git und Tools zum erstellen von Programmen (gcc, gnu-make, ...)
 
Unter Debian/Ubuntu lässt sich das bewerkstelligen mit
  sudo aptitude install build-essential git libusb-dev
  sudo aptitude install build-essential git libusb-dev
  git clone http://www.das-labor.org/usergit/labortage2011badge/
 
  cd ./labortage2011badge/commandline
==== Bootloader ====
Der Bootloader ist vorinstalliert auf dem ATtiny85. Gebraucht wird allerdings noch das Programm zum flashen der Software:
  git clone https://github.com/Bluebie/micronucleus-t85.git
  cd micronucleus-t85/commandline
  make
  make


./badge-tool
Nun kann ein beliebiges hex-file mit
  usage:
  ./micronucleus --run <path/to/hexfile>
    ./badge-tool [<option>] <command> <parameter string>
auf den Controller geflashed werden.
  where <option> is one of the following:
 
    -p --pad[=<pad value>] ............................ pad writing data with <pad value> (default 0) to specified length
==== HOTP-Software ====
    -f --file <name> .................................. use file <name> for reading or writing data
    --i-am-sure ....................................... do not ask safety question
    -l --loop <value> ................................. execute action <value> times
  <command> is one of the following
    -s --set-rgb <red>:<green>:<blue> ................. set color
    -g --get-rgb ...................................... read color from device and print
    -j --fade-rgb <rd>:<gd>:<bd>:<cnt> ................ change color by <rd>, <rg> and <rb> <cnt> times (all 8ms)
    -r --read-mem <addr>:<length> ..................... read RAM
    -w --write-mem <addr>:<length>[:data] ............. write RAM
    -z --read-flash <addr>:<length> ................... read flash
    -q --reset[=<delay>] .............................. reset the controller with delay in range 0..9
    -b --read-button .................................. read status of button
    -k --wait-for-button[=(on|off)] ................... wait for button press (default: on)
    -t --read-temperature ............................. read temperature sensor and output raw value
Please note:
  If you use optional parameters you have to use two different ways to specify the parameter,
  depending on if you use short or long options.
  Short options: You have to put the parameter directly behind the option letter. Exp: -koff
  Long options: You have to seperate the option from the parameter with '='. Exp: --pad=0xAA


Wenn die LED zu dunkel ist: der Parameter für -s ist <u>16 Bit</u> Dezimal, also bis 65535.<br>
Die HOTP-Software kann mit:
git clone http://code.nerilex.org/bg/labortage2013badge.git
heruntergelden werden.


Wenn noch jemand einen Bausatz hat und keinen programmierten Prozessor, der melde sich bei Suschman, ich schicke ihn dann zu.<br>
In dem Verzeichnis firmware/release finden sich fertig hex-files zum flashen.
===Funktionen===
Helligkeitswerte sind 16-Bit lang, d.h. maximale Helligkeit entspricht 65535 oder 0xffff. Bei sehr niedrigen Werten, kann es jedoch sein, dass das Tastverhältnis so ungünstig ist, dass ein Flackern wahrgenommen werden kann.


==== Set Color ====
In dem Verzeichnis hostware/commandline findet sich das Tool zum parametrisieren des Sticks. Diese Tool muss mit
-s --set-rgb <red>:<green>:<blue>
  make
Setzt die Farbe auf die RGB-Werte <red>:<green>:<blue>
Übersetzt werden.
   
==== Fade ====
-j --fade-rgb <rd>:<gd>:<bd>:<cnt>
Das Badge kann selbstständig linear (ohne Gammakorrektur) faden. Die ersten drei Parameter geben den Wert an, um den die Farbe alle 8ms (wirklich 8ms?) geändert wird.
Der vierte Parameter gibt an wie viele Zyklen gemacht werden, bis das Faden aufhört. Gefadet werden kann in beide Richtungen, um den Farbwert zu verringern muss die 16-Bit 2-er-Komplement Darstellung angegeben werden (also 0xffff für -1 0xfffe für -2 ... 0x8000 für -32768).


===Berechtigungen===
Wichtig ist, dass vor der Verwendung mit
Wenn sich das Programm nur als root nutzen lässt, kann dass an einer fehlenden udev-rule liegen.
./badge-tool -s <secret in hex>
Abhilfe kann eine Regel wie die folgende schaffen:
das Secret hinterlegt wird (max. 32 Byte).
  BUS=="usb",OWNER="root",GROUP="dialout"
Außerdem muss mit
In der Datei /etc/udev/rules.d/20-usb.rules . Euer user sollte dann natürlich in der Gruppe dialout sein. Ihr könnt natürlich auch eine beliebige andere Gruppe oder Eigentümer wählen.
  ./bade-tool -r
der interne Zähler zurückgesetzt werden, und mit
./bade-tool -d 8
die Anzahl der auszugebenden Ziffern auf 8 gesetzt werden (andere valide Werte sind 6, 7 und 9).


Zu beachten ist, dass bei dem obigen Beispiel '''ALLE''' USB Geräte unter dem Zugriff der entsprechenden Gruppe und Eigentümer steht. Alternativ kann per
Leider sind diese Schritte nötig, da der Bootloader nicht das EEPROM beschreiben kann, und die entsprechenden Werte im EEPROM hinterlegt sein müssen.
SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", GROUP="user"
nur der Zugriff auf das Labor-Badge der Gruppe erlaubt werden. Ach ja, und wer will, kann die Zeile mit einem freundlichen
RUN+="...../labortage2011badge/commandline/badge-tool -s 65535:32535:0"
beenden (... mit dem korrekten Pfad ersetzen) und kann damit die initiale Farbe des badges steuern.


[[Kategorie:Labortage]]
[[Kategorie:Labortage]]
[[Kategorie:Microcontroller]]
[[Kategorie:Microcontroller]]

Aktuelle Version vom 20. Mai 2018, 13:58 Uhr

           
LaborTageBadge2013

Release status: Beta [box doku]

Labortagebadge2013 top.png
Description Badge der Labortage 2013
Author(s)  Suschman, bg
Last Version  0.9
Platform  AVR (ATtiny85)
License  GPL
Download  Software/Hardware: GIT

„Beta“ befindet sich nicht in der Liste (experimental, beta, stable, obsolete, unknown) zulässiger Werte für das Attribut „Pr status“.




About[Bearbeiten | Quelltext bearbeiten]

Das "Ticket" der Labortage 2013 ist dieses mal ein HOTP Password Generator für Zwei-Faktor Authentifizierung nach RFC4226, der auch als kleines USB-AVR Devkit herhalten kann. Eventuell später weitere Firmware mit anderen Funktionen :).

Genießt das Logo der Labortage 2013 auf der einen Seite, und bestückt euch euren eigenen HOTP Generator auf der anderen.

Funktion[Bearbeiten | Quelltext bearbeiten]

Der AVR kommuniziert mit dem PC über USB mit Hilfe der vUSB library. Er ist mit dem Micronucleus USB Bootloader vorprogrammiert.

Nach dem laden der HOTP-Firmware und der Initialisierung mit einem Seed und einem Start Counter, generiert er bei jedem Tastendruck ein OTP Kennwort, was er als USB-Tastatur direkt eingibt.

Schaltung[Bearbeiten | Quelltext bearbeiten]

Labortagebadge2013 schematic.png Labortagebadge2013 silk.png Labortagebadge2013 top.png Labortagebadge2013 btm.png

Platine[Bearbeiten | Quelltext bearbeiten]

Die Platine ist zweilagig mit Lötstoplack, Bestückungsdruck und HAL-Zinn. Auf der einen Seite befindet sich die Schaltung, auf der anderen das Logo der Labortage. Die Platine wurde mit freundlicher Unterstützung von Basista Leiterplatten gefertigt.

Stückliste[Bearbeiten | Quelltext bearbeiten]

Name Part Reichelt
C1 SMD 0805 100nF X7R-G0805 100N
R1-R2 SMD 0805 2,2 kOhm SMD-0805 2,2K
R3 SMD 0805 68 Ohm SMD-0805 68R
AVR ATtiny85 SO8 ATTINY 85-20SU
D1,D2 MiniMelf 3,6V Zenerdioden Z3,6V SMD
USB USB A Buchse USB A
SW Kurzhubtaster SMD TASTER 9314

R4,R5,R6,LED1 und der 5-Polige Stecker sind Optional, wenn man mit dem Board noch anderes basteln möchte :).

Aufbau[Bearbeiten | Quelltext bearbeiten]

Der Aufbau erfordert durch die relativ dichte Bestückung in SMD und mit 0805 Bauteilen etwas Erfahrung im Löten von SMD. Wenn ihr es euch nicht zutraut, sucht euch einen Bastler der für etwas Mate Hand anlegt ;).
Bestückt wird zuerst C1, R1, R2, R3. Dann die beiden Dioden D1 und D2, dabei auf die Polarität achten.Der (blaue) Strick muss bei beiden zur Mitte der Platine zeigen. Dann den Prozessor auflöten, die Beschriftung muss lesbar sein wenn die USB-Buchse nach Links zeigt. Nun den SMD-Taster verlöten und zum schluss die USB-Buchse. Wahrscheinlich ist an der Platinenkante ein kleiner Vorsprung, der mit einem scharfen Messer oder einer kleinen Feile entfernt werden muss.

Die Stiftleiste, R4-6 und LED1 werden nicht bestückt. Diese können für Eigenen Projekte verwendet werden.

Arbeitet sorgfältig und macht immer mal wieder eine Sichtprüfung auf Kurzschlüsse und schlechte Lötstellen.

Software[Bearbeiten | Quelltext bearbeiten]

Der AVR ist im Bauteilesatz der Labortage ist mit dem dem USB-Bootloader vorprogrammiert, das Binary für den PC muss unter Linux noch mit libusb übersetzt werden. Für Windows gibt es fertige binarys...

Bauen für Linux[Bearbeiten | Quelltext bearbeiten]

Tools installieren[Bearbeiten | Quelltext bearbeiten]

Gebraucht wird git und Tools zum erstellen von Programmen (gcc, gnu-make, ...)

Unter Debian/Ubuntu lässt sich das bewerkstelligen mit

sudo aptitude install build-essential git libusb-dev

Bootloader[Bearbeiten | Quelltext bearbeiten]

Der Bootloader ist vorinstalliert auf dem ATtiny85. Gebraucht wird allerdings noch das Programm zum flashen der Software:

git clone https://github.com/Bluebie/micronucleus-t85.git
cd micronucleus-t85/commandline
make

Nun kann ein beliebiges hex-file mit

./micronucleus --run <path/to/hexfile>

auf den Controller geflashed werden.

HOTP-Software[Bearbeiten | Quelltext bearbeiten]

Die HOTP-Software kann mit:

git clone http://code.nerilex.org/bg/labortage2013badge.git

heruntergelden werden.

In dem Verzeichnis firmware/release finden sich fertig hex-files zum flashen.

In dem Verzeichnis hostware/commandline findet sich das Tool zum parametrisieren des Sticks. Diese Tool muss mit

make

Übersetzt werden.

Wichtig ist, dass vor der Verwendung mit

./badge-tool -s <secret in hex> 

das Secret hinterlegt wird (max. 32 Byte). Außerdem muss mit

./bade-tool -r

der interne Zähler zurückgesetzt werden, und mit

./bade-tool -d 8

die Anzahl der auszugebenden Ziffern auf 8 gesetzt werden (andere valide Werte sind 6, 7 und 9).

Leider sind diese Schritte nötig, da der Bootloader nicht das EEPROM beschreiben kann, und die entsprechenden Werte im EEPROM hinterlegt sein müssen.