Table of Contents
Introduction
I purchased this after seeing that Sean colporteur had found it useful. I got one for a kid, and the other will get taken apart to see if dynamic data can be sent to it somehow!
The display looks better in real life than this video (more contrasty in real life). The unit has a built-in rechargeable battery, a micro USB connector, and two buttons on the side. One button powers it on/off, and the other button chooses between messages, or with a long-press will change the brightness level.
The display multiplexing is easily visible when moving the display or eyes, but isn't too bad at all when viewing it normally. It is very bright (not tried it in sunlight yet).
As an LED badge, I'd say it is near-perfect. The text is bright and clearly visible from a significant distance (I tested the length of a room, not tried further!). I think in a small-medium lecture hall or classroom setting, one would easily be able to read off the names of attendees.
Using the Windows Application
Plugged in, I see a HID-compliant vendor-defined device and USB Input Device (VID 0416 PID 5020) appear in the Device Manager.
It's pretty easy to use! (Instructions below). There is a Windows app. I don't think custom symbols can be uploaded, but there are a few icons that can be used. In the example screenshot below, the configuration is such that the message will scroll onto the blank display starting from the right side moving leftward, and then when the display is blank, then it will scroll again from the right side.
USB version instructions:
Bluetooth Version
Bluetooth version instructions:
(Image source: scan of supplied fold-out instructions)
Using Python
There is easy-to-use code to program the device using Python, instead of using the ready-made Windows application.
Here is how to do it:
On a Linux box, type:
mkdir -p ~/development/led-badge cd ~/development/led-badge git clone https://github.com/jnweiger/led-name-badge-ls32.git cd led-name-badge-ls32
As root user (or using sudo) create a file in the folder /etc/udev/rules/d called 99-led-badge-44x11.rules and type the following lines into it and save it:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5020", MODE="0666" KERNEL=="hidraw*", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5020", MODE="0666"
As root user (or prepend each line with sudo) type:
udevadm control --reload-rules && sudo udevadm trigger apt-get install libhidapi-hidraw0 ln -s /usr/lib/x86_64-linux-gnu/libhidapi-hidraw.so.0 /usr/local/lib/
As normal user, type:
pip install pyhidapi pip install pillow
Plus the LED badge USB connection to the Linux box, and type the following to program any message : )
python3 led-badge-11x44.py "Boo"
Note: if you get an error such as:
Traceback (most recent call last): File "/home/shabaz/development/led-badge/led-name-badge-ls32/led-badge-11x44.py", line 460, in <module> dev = pyhidapi.hid_open_path(devinfo[0].path) File "/home/shabaz/.local/lib/python3.10/site-packages/pyhidapi/pyhidapi.py", line 471, in hid_open_path raise RuntimeError('Could not open device.') RuntimeError: Could not open device.
then you can check the flags for the USB device by typing:
ls -alg /dev/hidraw0
and you should see something like this:
crw-rw-rw- 1 root 239, 0 Mar 20 16:08 /dev/hidraw0
If you don't see crw-rw-rw- then there is a udev issue, perhaps the file was not correct, or the udevadm command was not run.
Worst case, the (not great) workaround is to do the two pip install commands listed earlier as root user, and then run the program as root user too.
The GitHub page can be read to see how to do more with the code.
Using Linux and Go
(Note: Personally I'd recommend using Python as shown in the section above. I'm leaving the Go information here in case it is useful for anyone, but I later discovered the Python code and from my perspective, currently I prefer using that).
I found some code online, with no instructions, and I couldn't get it to work with Windows 11 (see the comments below for screenshots of what I tried) however it works with Linux. It still needs more work, but the information here should be sufficient to at least get going. I tested this with Ubuntu on Intel, but is should theoretically work on ARM too (e.g. Raspberry Pi):
As root user (or prepend with sudo):
apt-get update apt-get upgrade apt-get install usbutils
As a normal user:
mkdir -p ~/development/temp cd ~/development/temp
As root user:
tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz cd /etc/udev/rules.d
Create a file as root user, called 99-hidraw-permissions.rules and place this line in it:
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"
As root user:
chmod 755 99-hidraw-permissions.rules usermod -a -G plugdev shabaz (replace shabaz with your username!) udevadm control --reload-rules && udevadm trigger
Next, as normal user, edit the ~/.bashrc file and append the following line:
export PATH=$PATH:/usr/local/go/bin
Exit out of the shell and re-log in, to allow the .bashrc file to be re-read.
As normal user:
mkdir -p ~/development/led-badge/app cd ~/development/led-badge/app wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz wget https://gist.githubusercontent.com/korc/ab70e5011a0d238cd16bc5fd9846e88d/raw/af645f0192b2f02a3bfb0fc56d3df1af118aa976/led-badge-write.go go mod init led/led-badge-write go get github.com/golang/freetype go get github.com/golang/freetype/truetype go get github.com/karalabe/hid go get github.com/jet2/hid go get golang.org/x/image/font go get golang.org/x/image/math/fixed
You'll need a font file. I went to a fonts website and downloaded the file there. It is not the best font file for the LED badge, as you'll see in the photo further below, so this is "for further study". If you find a better font file, please share the info!
Unzip the file and place the .ttf file in the ~/development/led-badge/app folder. It will be called unicode_8x12.ttf in this example.
Now you'll need to edit the led-badge-write.go file.
Change the line containing the text "github.com/karalabe/hid" (it is about line 28) such that the text github.com/jet2/hid is within the speech-marks instead.
Also, search for the line containing the text ttf (about line 244) and change the filename within the speech-marks to unicode_8x12.ttf instead.
Now, in theory, you should be able to execute the program as a normal user, but it didn't work for me. I get this error:
I had to run it as root user for now. If anyone has a working solution, please let me know.
As root user, type:
export PATH=$PATH:/usr/local/go/bin
Then to transfer the text 'hello' to the display, type:
go run . hello
As soon as you type that, you'll see the display go blank and then the text hello will scroll from right to left across the display once. After that, the display can be unplugged from the Linux box and powered on to have the message scroll repeatedly.
There are other configuration commands that are possible, and the .go code would need to be inspected because I have not found any documentation on it.
The poor-quality photo below (I didn't have time to grab a better shot) shows the message scrolling off the display. The 'e' in hello is a completely filled circle, because the .ttf font file wasn't ideal as mentioned, but in principle, it works. A better font file should be selected.
What's Inside?
It is fairly easy to unclip the rear panel, to peek inside (click photo to zoom):
The CH546 microcontroller has an 8051-based core.
Thanks for reading!