Coffee Space


PDA Part 4

Preview Image

This is a continuation of the Linux PDA project, where I’ve dropped the ‘Linux’ part due to the fact it will no longer be supported.

Purchase Update

I finally purchased the M5 stack and that will hopefully arrive before Christmas some time:

Email confirmation of order

As I said in part 3, we have dropped the requirement for Linux support and this appears to be the best solution at the lowest cost that could become a daily driver during development.

In the end it cost $77.24 NZD (including shipping) ($52.13 USD or £39.31 at the time of writing). For this cost, we should have essentially all of the hardware required to try out all of the ideas that I have.

Update: Since I started writing this, it arrived. In the end it came just after Christmas.

Device arrived and runs demo

As you can see, the hardware appears to work well and the demo is really quite sexy. After spending some time with Pine64 products, it feels weird to have something arrive that just works out of the box 1!

As I write this update, it sits there with the display on, so that I may gauge how long I could reasonably expect out of the battery life.

Software Architecture

I previously discussed some ideas around the software architecture, and after having some time to think, these ideas have somewhat crystallized:

  1. Arduino environment - I want to build the main software from the Arduino environment. This will be done headless (as I did with another project), but the idea is that it keeps it very simple to develop and for new people to come in. I can then also utilize a tonne of helper utilities that are offered by Arduino.
  2. User Interface - I will look to use the LVGL library as it offers everything I will need. Applications will then communicate with this through an API I will go on to design.
  3. Applications - These will be building using the Wasm3 language. I have personally zero experience with it, but I am sure it should be possible to get something operating.


In general, the plan will be to get the minimum project up and running as quickly as possible, so that I can begin to daily drive the device. I will therefore need a plan of attack:

  1. Arduino environment - I want to be able to build and push the source from the terminal. Ideally the build process itself is as repeatable as possible, to encourage others to also take part.
  2. User interface - It’s pointless to have such a device unless I can get input and output. To that end I intend to get LVGL hooked up as soon as possible.
  3. Main menu - I will need a main menu to access everything from - the device ultimately needs to boot into something.
  4. Settings menu - The next step after this will be to write a settings menu, allowing configuration of such things like WiFi. This device is only really useful if it can access something like the WiFi ultimately.
  5. VM - The next step will to be create the VM environment for the applications to run in. The test application will be a simple “hello world” program that simply displays to the screen. This allows for testing multiple features, such as VM running, VM multi-tasking, exiting a VM to terminal, multiple display buffers, etc. There is a lot to be learned in such a simple program.

Stay turned for further updates!

  1. I think Pine64 could really learn something from this in the future.↩︎