LA104 pocket logic analyser operating system
LA104 is another nice piece of handheld hardware coming from e-design / miniware company similar to their previous product - pocket digital storage oscillosope DS203.
This time they designed wholly digital device without analog circuitry featuring 4 general purpose IO signals and 4 digital inputs processed by AG1K FPGA chip, the processor used is the same as in DS203 - STM32F103VCT6. Device is battery powered, charged through USB micro connector, its display (ILI9341) offers resolution of 320x240 pixels and the storage EEPROM has this time capacity of 8MB. Check the scheme here
When I was developing alternative firmware for DS203, I was trying to design some simple operating system that would allow me to upload easily new programs to the devie with ability to switch between them without flashing it again. Something similar that jpa did before with his PAWN interpreter on DS203 with a little difference that the application will be native C/C++ compiled code offering full computational power of the device. Unfortunately the GCC toolchain I was using had some bug which produced ARM32 instructions in PLT section which are not supported by STM32F103 and I was not able to force the compiler to use Thumb instruction set. So the dynamic relocation of imported symbols was an impossible task to implement. Now after few years, this problem was fixed and finally I could continue developing this operating system I have started before.
Installation
Go to release section of this page, find latest version for your device (there are releases for LA104, DS203 and DS213) and download system.hex. Power on the LA104 while holding first button. Connect the device using USB cable with your computer. New disk drive should appear, copy the system.hex file there. The disk should disconnect and reconnect shortly after the upload was finished. If you are lucky, you will see system.rdy on the disk. Turn the unit off and on and copy remaining files from zip archive la104apps.zip to your device. After power cycle a gui should appear. For Linux/OSX systems use tools/dfuload script to copy the firmware, if the file system does not appear stable, you can format it using tools/dfuload/format.sh script.
Building
Refer to this tutorial
Review video
Online demo
Repository structure
- resources - old projects, screenshots used in this document and tutorials
- tools
- dfuload - copies the firmware to the device, works for DS203, DS213 and LA104 on linux/osx
- elfstrip - reduces the size of ELF images, used by all application building scripts
- fpga - FPGA images and scripts for downloading images using openocd
- midiconv - converts multichannel midi files into single channel (single data stream), so it can be played without seeking
- openocd - notes on how to flash DS213 over SWD interface and how to debug the apps in Microsoft Visual Code
- rtl433 - rtl433 clone modified to be used as WASM binary in web browser/javascript
- shellicons - icons used in LA104 visual shell
- stm32flash - recovery tool for DS203
- system
- apps - working applications mainly for LA104
- apps_ds213 - applications for DS213/DS203
- apps_experiments - arduino sample code interfacing some sensors and experimental applications. Use this as reference code for your projects. Mostly just simple console applications
- apps_featured - advanced applications with full visual interface
- apps_shell - file lister and graphical application switcher
- apps_usb - apps simulating various USB peripherals
- os_host - system source code, actually an application which loads ELF files from filesystem, matches the imported symbols and loads them
- os_library - dummy library exposing all functions of the system. Necessary for building all applications
- os_platform - support files for building for other platforms than Arm (Win32, OSX XCode or WASM)
- scripts - building scripts
Applications in LA104 package
News
New applications
- MH-Z19B NDIR CO2 sensor in UART mode - apps/110_mhz19b
- Hunter X-core controller using proprietary one wire protocol - apps/115_hunter
- Climateguard radsens I2C dosimeter with GM tube and 400V inverter - apps/109_radsense
Avrisp programmer
- Can be used for flashing Atmel MCUs - either for flashing HEX files directly over ICSP connector 105_avrprogrammer, or use LA104 as AVRISP USB programmer compatible with Arduino IDE 104_avrisp
Docker integration
- The la104 images can be build using docker, integration details
EInk display image loader
- Application 90_epd_image loads BMP images and transfers them into the eink display
RF Toolkit
Ultimate toolkit for hacking OOK/ASK wireless devices (weather stations, wireless keys...) using CC1101 transceiver
- RF Toolit application: 80_rftool
- Spectrum analyser: 82_specan
- Web usb signal analyser: 79_cc1101osc
(LA104) Variable frequency drive visualizer
This app uses RS485 adapter to talk to Invt Good drive inverters. Read more here, besides the visualization tool, there is also application which emulates GD100 VFD (as seen on the picture)... Watch video:
WASM experimental evironment
LA104 OS running in your browser using WASM technology
(DS203) Web USB Oscilloscope
Proud to announce the first oscilloscope in the world using the WebUsb technology (correct me if I am wrong)! Read more here
Watch video here:
Addressable RGB led strip tester
Addressable LED tester with advanced functions. Supports up to 32x WS2812/WS2812/SK6812 and other compatible addressable LED modules. More than 15 static and dynamic color presets, speed control, 8 different filter post-process options... Possible to build for OSX as desktop application, or LA104 native app or as WASM based HTML application. Try it online here! Watch video below:
Temperature grapher
Shows temperature of up to 8 DS1820 sensors in form of graph. Automatic export of measured values into html, source code.
One firmware to rule them all
Operating system developed as a part of this project was ported to other handheld devices from miniware (DS203 rev. 2.60, DS213, LA104). Still in early development stage, but looks very promising.
Dream SAM2695
LA104 playing midi on SAM2695 wavetable synthesizer through UART:
Simcom driver
Simcom 800L driver with nice interface, sends 6 HTTP (get/post/json) requests in one minute. test45_simcom
GPIO Tool
Allows to monitor logic level on all 8 pins, the P1-P4 pins can be used as outputs. In PWM tab it is possible to set the PWM frequency and PWM levels for P1-P4 pins, including exponential compensation curve or automatic quasi-periodic animation of all outputs.
Wave alchemy
Currently in development stage. App sniffs for wireless transmission using CC1101 transceiver, automatically decodes the protocol (wireless weather station, KEELOQ keyfob packets, fixed code remote controls, rolling code remote controls). To aid the decoding process, app displays the sniffed signal in form of histogram for easy identification of protocol (manchester encoding, pause length encoding) and its timing. Recorded signal can be stored in flash or transferred to PC for further analysis. Stored signals can be replayed to perform replay attack in case of fixed code sequence. Besides support of CC1101 chip, this app can be used in conjunction with infrared receiver and infrared diode to record and replay IR control codes for TV set or another consumer electronics.
I2C Scanner application
I2C Scanner including database of 245 I2C devices, automatically shows description of identified device.
Pulseview compatibility
Added USB application which emulates sigrok SUMP protocol. By choosing "Openbench logic sniffer (ols)" in Pulse view configuration, LA104 can transfer measured signals to pulse view for deep analysis. Pulseview support wide range of protocols and offers intuitive user interface. Currently only 50kHz sampling is supported on P1..P4 pins, samplerate is sufficient for decoding of 9600 baud serial link.
Graphical application chooser
Stock logic analyser integration
Logic sequencer app
16 channel logic analyser and sequencer. Generator of 4 bit pattern attached to CD4543 BCD to seven segment decoder. PCF8574 used as 16 bit expander
Midi player - midi parser and player
Connect your midi keyboard with two wires (3V and P1 through 100-330 ohm resistor).