Led-badge of mini-lichtkrant: alleen voor windows?
LED-badge
Mono-kleur scherm (blauw, rood, oranje, wit,..). Draagbaar als badge met speld, of bruikbaar als mini-lichtkrant met magneet. Er zijn een paar verschillende uitvoeringen met dezelfde kenmerken binnenin, bv conrad (witte doosjes met sticker/barcode en kleuraanduiding), ALLNET met standaard aziatische foto op doosje (Badge is verschillend: heeft aan-uit schuifschakelaar wat handig kan zijn), …
- Type: M1-8; 44×11 pixels
- aansluiting: micro-usb. Handigste zou een usb kabel of tussenzetkabel zijn met schakelaar; je moet immers telkens de verbinding verbreken om de tekst te bekijken. Maar de meeste kabels met schakelaar hebben alleen de laadfunctie-draden verbonden, dus daar ben je hier niets mee.
- software:
git clone https://github.com/jnweiger/led-badge-44x11
en de python3-usb lib - python programma:
sudo python3 ./led-badge-11x44.py -s 3 "Mijn Tekst"
USB
linuxblue:~ # lsusb
Bus 002 Device 005: ID 0416:5020 Winbond Electronics Corp.
dmesg
Uitgetrokken usb kabel:
[ 6326.524334] usb 2-1.3: USB disconnect, device number 6
Verbonden usb kabel:
usb 2-1.3: new full-speed USB device number 7 using ehci-pci
[ 6334.052734] usb 2-1.3: New USB device found, idVendor=0416, idProduct=5020, bcdDevice= 0.00
[ 6334.052738] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6334.052740] usb 2-1.3: Product: LS32 Custm HID
[ 6334.052742] usb 2-1.3: Manufacturer: LSicroelectronics
[ 6334.054294] input: LSicroelectronics LS32 Custm HID as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:0416:5020.0005/input/input29
[ 6334.054468] hid-generic 0003:0416:5020.0005: input,hidraw0: USB HID v1.10 Device [LSicroelectronics LS32 Custm HID] on usb-0000:00:1d.0-1.3/input0
In KInfoCenter:
Device information, USB devices, EHCI Host controller (2); Unknown:
LS32 Custm HID
Manufacturer: LSicroelectronics
Class: 0 ((Defined at Interface level))
Subclass: 0
Protocol: 0
USB Version: 1.01
Vendor ID: 0x416 (Winbond Electronics Corp.)
Product ID: 0x5020
Revision: 0.00
Speed: 12 Mbit/s
Channels: 0
Max. Packet Size: 64
Software
Er is enkel een witte mini cd (zonder label) bijgevoegd, met 80 Gb Windows software:
webgang@OptiPlex380:/media/webgang/2019-06-05-17-13-00-0$ tree
.
├── [ 2048] Help
│ ├── [ 469504] Instruction(Chinese).doc
│ ├── [ 963584] Instruction(English).doc
│ ├── [ 1015296] Instruction(Spanish).doc
│ ├── [ 188] Read Me.txt
│ └── [ 647575] User Manual-Korean.docx
├── [ 24576] Install.exe
├── [ 2048] LED Display Profession Program
│ ├── [ 10029568] BMPBadgeSetup.msi
│ ├── [ 2048] DotNetFX40
│ │ └── [ 50449456] dotNetFx40_Full_x86_x64.exe
│ ├── [ 427520] setup.exe
│ └── [ 2048] WindowsInstaller3_1
│ └── [ 2585872] WindowsInstaller-KB893803-v2-x86.exe
├── [ 2048] LED Display Program
│ └── [ 12186818] LED Badge.exe
├── [ 228] Read Me.txt
├── [ 174889] User Manual-English.docx
└── [ 952933] User Manual-Korean.pdf
5 directories, 14 files
Linux alternatieven
1. Hack
Gelukkig zijn er ook Linux hackers aan de slag gegaan; bv Dave Akerman:
http://www.daveakerman.com/?p=1440
Die uitlegt hoe je het protocol (tussen pc en led-badge – over usb) kan doorgronden met behulp van een serial port sniffer.
Kort samengevat (moest de pagina verdwijnen):
Eerst een 6-byte start pakket “Ahello”
Gevolgd door een korte pauze (10ms bv)
Dan 48 bytes met de parameters en het aantal bitmap paketten.
Gevolgd door een pauze van minstens 800ms
Dan volgen de bitmap paketten, 11 bytes ieder, met een pauze van minstens 100ms tussen de opeenvolgende.
.
De parameters:
.
Byte 0 (eerste byte van het parameter pakket) heeft de helderheidswaarde in bits 2-0. Waarde 0 is het helderst en 3 het donkerst.
Byte 2 wordt zo geïnterpreteerd:
– Bit 7 is de schakelaar voor het marquee effect (rondlopende rand van 1 puntje groot)
– Bits 6-4 bevatten de snelheid van 0 (traag) to 7 (snel)
– Bits 2-0 geven de richting aan (0 is “naar links”)
Byte 14 bevat het aantal bitmap paketten. Om een of andere vreemde reden wordt deze waarde herhaald in bytes 16, 18, 20, 22, 24, 26 en 28.
Met die informatie kan je je eigen programma maken om de led-badge aan te spreken.
Hij beschrijft verder hoe hij dat doet met een Raspberry Pi, en hoe hij het probleem aanpakt dat de display pas zijn functie krijgt als hij uitgetrokken wordt uit de usb poort (anders toont hij eenmalig de veranderde tekst maar daarna terug het oplaadsymbool).
2. Python script
En er is iemand die ook gewoon software ter beschikking stelt:
De download van github geeft een mapje led-badge-44×11:
git clone https://github.com/jnweiger/led-badge-44x11
~/IOT-SBC-PCB>
Cloning into ‘led-badge-44×11’…
remote: Enumerating objects: 303, done.
remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303
Receiving objects: 100% (303/303), 10.06 MiB | 3.47 MiB/s, done.
Resolving deltas: 100% (156/156), done.
En dan heb je daarin volgende bestanden en directories:
(waarvan niet alle nuttig voor ons)
99-led-badge-44×11.rules
.gitignore
.git/
led-badge-12×48.py@
led-badge-11×44.py*
LICENSE
research.md
README.md
RUN.sh
usb-power.sh*
gfx/
photos/
doc/
win/
Voor het succesvol uitvoeren van het python script moet je toegang hebben tot de usb-poort.
Een foutmelding die je anders kan krijgen is:
…
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Voeg de gebruiker toe aan de groep die daarvoor rechten geeft, bv opensuse: UUCP.
CLI:
usermod -a -G UUCP webgang
Yast:
Security and users, user and group management/administration, kies gebruiker, Edit.
“Existing local user”, Tab-blad “Details”:
vink de groep UUCP aan, Ok.
(en mogelijk uitloggen om aktief te maken?).
Indien dat niet werkt, of je dit slechts tijdelijk/eenmalig wil gebruiken, of je nog geen toegang tot de usb-poort hebt ingesteld: hier wordt sudo gebruikt om dat als root uit te voeren:
sudo python3 ./led-badge-11x44.py -s 3 "Copyleft ;-)"
ERROR: Need the pyhidapi or usb.core module.
Please try
sudo pip3 install pyhidapi
sudo pip install pyhidapi
sudo apt-get install libhidapi-hidraw0
sudo ln -s /usr/lib/x86_64-linux-gnu/libhidapi-hidraw.so.0 /usr/local/lib/
or
sudo apt-get install python3-usb
Of voor bv openSUSE: https://software.opensuse.org/package/python3-usb
# zypper install python3-usb
Loading repository data…
Reading installed packages…
Resolving package dependencies…The following NEW package is going to be installed:
python3-usb1 new package to install.
Overall download size: 98.8 KiB. Already cached: 0 B. After the operation, additional 539.1 KiB will be used.
Continue? [y/n/v/…? shows all options] (y):
y
Retrieving package python3-usb-1.0.2-lp152.3.3.noarch (1/1), 98.8 KiB (539.1 KiB unpacked)
Retrieving: python3-usb-1.0.2-lp152.3.3.noarch.rpm ……………………………………………………………..[done]Checking for file conflicts: …………………………………………………………………………………[done]
(1/1) Installing: python3-usb-1.0.2-lp152.3.3.noarch ……………………………………………………………[done]
De help geeft aan wat in principe kan:
python3 ./led-badge-11x44.py --help
usage: led-badge-11x44.py [-h] [-t TYPE] [-s SPEED] [-B BRIGHTNESS] [-m MODE] [-b BLINK] [-a ANTS] [-l] MESSAGE [MESSAGE ...] Upload messages or graphics to a 11x44 led badge via USB HID. Version 0.12 from https://github.com/jnweiger/led-badge-ls32 -- see there for more examples and for updates. positional arguments: MESSAGE Up to 8 message texts with embedded builtin icons or loaded images within colons(:) -- See -l for a list of builtins optional arguments: -h, --help show this help message and exit -t TYPE, --type TYPE Type of display: supported values are 12x48 or (default) 11x44. Rename the program to led- badge-12x48, to switch the default. -s SPEED, --speed SPEED Scroll speed (Range 1..8). Up to 8 comma-separated values -B BRIGHTNESS, --brightness BRIGHTNESS Brightness for the display in percent: 25, 50, 75, or 100 -m MODE, --mode MODE Up to 8 mode values: Scroll-left(0) -right(1) -up(2) -down(3); still-centered(4); animation(5); drop- down(6); curtain(7); laser(8); See '--mode-help' for more details. -b BLINK, --blink BLINK 1: blinking, 0: normal. Up to 8 comma-separated values -a ANTS, --ants ANTS 1: animated border, 0: normal. Up to 8 comma-separated values -l, --list-names list named icons to be embedded in messages and exit Example combining image and text: sudo ./led-badge-11x44.py "I:HEART2:you"
Mapje met beelden:
bicycle3.png fablab_logo_11x11.png falafue_logo_44x11.png heart8.png owncloud_logo_24x11.png bicycle_l2.png fablab_logo_16x11.png happy2.png heart_full.png starfield bicycle_r2.png fablabnbg_logo_44x11.png happy.png heart.png
Maar de enige echt werkende beeld-parameters zijn die in de broncode voorkomen:
happy
happy2
heart
HEART
heart2
HEART2
fablab
bicycle
bicycle_r
owncloud