/\___/\
   /       \
  l  u   u  l
--l----*----l--      _   _ _                      _           _             
   \   w   /        | |_(_) |_ ____ __  __ _ _ _ ( )___  _ __| |__ _ __ ___ 
     ======         | / / |  _|_ / '  \/ _` | ' \|/(_-< | '_ \ / _` / _/ -_)
   /       \ __     |_\_\_|\__/__|_|_|_\__,_|_||_| /__/ | .__/_\__,_\__\___|
   l        l\ \                                        |_|                 
   l        l/ /
   l  l l   l /
   \ ml lm /_/
	
kitzman's place

Embedded Programming on Plan9 (#1)

embedded plan9
People look for the right tooling, libraries, and support when considering an operating system. I’ve been using 9front for a while, and wanted to do some embedded programming on it too. There’s no gcc, so SDKs won’t work directly, no tool to flash chips with - most people would use something else. But don’t give up! Plan9 was used throughout the history for distributed computing, creating operating systems, and high-performance computing. Read more...

/mnt/term on UNIX, and other hacks

plan9 linux unix 9p fuse
Introduction UNIX-like operating systems today already have solutions for file-sharing across machines, and remotely mounting filesystems. The easiest, and a pretty solid way, if a shared network filesystem does not exist, is to use sftp via FUSE. Even on Plan9, mounting a remote UNIX machine’s filesystem can be done through sshfs(4). On Plan9, when rcpu-ing to remote systems, the script exports the whole client tree, which is then mounted on /mnt/term. Read more...

Sysinfo and Vac Archives over Gemini

plan9
Introduction I have a 9front cpu server, which I use for working remotely on my personal projects, build software, and keep backups. One of its uses, is for keeping vac backups of documentation. As I sometimes needed to access it, and to share it as well, importing and mounting the vac filesystems was not easily accessible, especially for someone who doesn’t want to learn to use Plan9. Gemini Serving the archives via a protocol such as HTTP or Gemini would be the preferred way for most people to access and share files. Read more...

Interfacing an LCD with an SBC - with Zig! #1

embedded
Intro When one looks up how to add a display to an SBC (such as a Raspberry PI), most of the examples/tutorials just say to use this or that kernel module, or library. Since I’m a DIY person, I refused this approach when it came to this parallel I/O I randomly got my hands on. This can shed some light, more on how easy it is to bootstrap a cross platform embedded program, than how to read documentation/a datasheet. Read more...

Watchtower Clock (#1)

embedded
Intro I can’t count how many times a regular alarm failed to wake me up. But I know what would work - a strobe and a dissonant sound. Powerful lights help the brain, especially during winter, to reset its circadian rhythm. When my sleep is shifted by 6-12h, -if- I manage to wake up, I use light to try to get myself back on track. Notice the big -if-. How about I create my own clock? Read more...

Android for IoT

embedded linux
Introduction So… My previous attempt to use pmOS was not so successful… … probably due to lack of vendor libraries which would require the native Android libc, lack of set properties, and daemons I’d have to compile in order to use, let’s say, the GSM network. So I decided to give Android a try, as a general-purpose IoT operating system ^^. Last time I saw it in the wild, for the same usage, was for ODroid. Read more...

Playing with Containers (and Rust)

software linux
Synopsis I started working, in my free time, on my own solution to containers and VM management. The motivation was, primarily to learn, but decided it can also serve as a tool for others. I’ve had issues with Firejail (non-programmable configuration), Guix (lack of desired features) and QubesOS cannot run on all hardware. I think the best would be to provide a solution which, does not only come with pre-configured settings, but one should be able to program their desired behaviour. Read more...

PostmarketOS mingling

embedded linux
I have this old HTC lying around and I’m currently playing around with it. Setting it up Obviously the first step is installing a bootloader after unlocking. The second step is building and installing pmOS itself, and the ‘pmbootstrap’ tool does a great job at automating the process. The partition table is slightly different than Android systems. pmOS creates a single partition, which in itself contains a partition table. This will have the same format as any Linux partition table. Read more...

Reverse engineering 'nvdata'

re
Introduction On mobile phone devices, there are different partitions/sections of data, which differs from vendor to vendor. Samsung for example, keeps the partition information in a PIT file, and the partitions are various: radio (GSM/LTE/etc) firmware, bootloader, network vendor information, etc. One of the most crucial ones, the EFS partition hold information which is never supposed to be overwritten, such as the IMEI, network vendor data, etc. nvdata.bin You probably guessed that “nvdata” stands for “network vendor data”. Read more...
1 of 1