These are some of the projects I've started, with an eye on minimizing complexity of the whole tech stack, many of which are maintained by a community of like-minded individuals, DM me at cnlohr for an invite to our discord server:
rawdraw - graphics (Opengl/Raw) and input for Android, WASM, Windows, Linux without the bloat
mini-rv32ima - RISC-V emulator in about 1,000 lines of code. Able to boot Linux
sfhip - Extremely memory tight immediate mode IP library for IPv4, TCP/IP, UDP, ARP, and DHCP
fix32_fft - modern C fixed-point FFT library geared for 32-bit systems, like ARM and RISC-V
vpxcoding - VPX arithmatic coding library for bit compression with a tiny code/memory footprint
cnrbtree - Basically a c++
<map>or Dictionary in C, as a single file headerheatshrink-sfh - Extremely simple implemenation of heatshrink for decompressing data in <600 bytes
rtgz-tinf-util - Very small port of tinfl, a gzip decompressor in a header only library
miniosc - Minimal OSC (Open Sound Control) library for C with support for platform-independent sockets
tsopenxr - Everything needed to build OpenXR VR apps for PC or Quest in one header file
csgp4 - single-precision, SGP4 orbital mechanis for shaders or microcontrollers
Other libraries and tools:
ch32fun - ch32v microcontroller build system, targeting compactness, development speed and openness
rawdrawandroid - build android apps in c, without any java, with 1 second development cycles
h264fun - Raw PCM H.264 video encoding streams with support for RTMP and RTSP
lamenet - bad network simulator, to simulate a bad network connection
coefficient decompose calculator - Compute constant multiplies decomposed to optimal/minimal bit shifts
microclockoptimizer - clock tree calculator / solver for computing microcontroller clock trees
cnping - monitor live network conditions, gain insights about poor network performance in realtime
colorchord - realtime chromatic sound-to-color conversion
minimdnsd - small, ultra low overhead Linux MDNS server
nosdk8266 - Extremely lightweight ESP8266 SDK
pi_tpi - AVR TPI programming interface for Raspberry Pi GPIO
x32-ws2812-usbhs-breakout - 32-simultaneous-output WS2812B driver using USB HS
cilbox - C# CIL emulator/scripting sandbox for unity, focused on speed and simplicity
Various demos:
channel3 - NTSC/PAL VHF video transmission from the ESP8266 via IO pins
espusb - use the esp8266 as a USB device, by bit-banging GPIOs to enumerate as a low-speed USB device
rv003usb - Bit bang USB low-speed on the ch32v003 (fully featured)
ch32v003_3digit_lcd_usb - bit banged 3-digit LCD driver for the ch32v003
oledscope - using OLED displays as 15kPPS vector scope
ch32v00x_ntsc - NTSC composite output on ch32v003/006, may not work on digital TVs
lolra - Broadcast 900MHz LoRA messages on microcontrollers without using radios over a kilometer
airspydump - Dumping raw IQ samples from AirSpy SDRs for narrow time analysis
- Badder Apple (TODO)
rtl8153_userspace - RTL8153, GbE to USB via userspace from Linux or Android for raw packet access
cnixxi - use a ch32v003 as a high-voltage flyback and control a nixie tube, with PWM digitally
esp32s2-cookbook - esp32-s2 experiments + tools and non-IDF sdk
ethertiny - bit bang ethernet Base 10-T on an attiny85
ch32v00x_ntsc - software bit bang NTSC video with the ch32v003 or 006
starcounter - example using olive, ffmpeg and github APIs to animate user's stargazers over time
Documentation:
cnlohr_tricks - tricks&tricks I've learned over the years about electronics, programming and engineering
cntools - my incomplete library for various header-only and other libraries. (Mostly uncategorized)
cnhardware - kicad footprints and all my random hardware projects
halnoslides - my talk on how to write a embedded development environment from scratch
shadertrixx - lots of discussion on writing shaders for unity
Radios are just Microcontrollers in disguise - Hackaday talk on TX and RX RF signals without radios
CNLohr's Assembly Notes - My assembly notes (also from my 2022 Hackaday talk)
VR/Graphics
voxeltastic - render 3D volumes with path tracing in-browser, or in vr!
cnovr - an OpenVR playground with hot-compile-and-reload code
vrc-rv32ima - a HLSL implementation of mini-rv32ima, to emulate processors in shaders on VRChat
openvr_overlay_model - openvr stereo overlay example
openvr-screengrab - minimal example to create DirectX contexts in pure C and grab SteamVR screengrabs
slapsplat - VRChat-friendly Gaussian Splat renderer for VR, using ordinal sorting
While I cannot accept donations, favors or work at the moment, your money may go well with the following individuals:
- MonteMonte for their continued work on ch32fun and supporting projects Kofi Link
- iakat for their work on adsb.lol, and open ADSB platform. Github Sponsorship
- Dooly123 for their continued work on Basis, an open source VR social framework






