See homepage for blah blah

Table of Contents:

  1. Build normal blinky
  2. Create SBoM for blinky
  3. Add “Generic” Phoenix
  4. OpenC2 Phoenix API

1. Build normal blinky

2. Create SBoM for blinky

XML file created is here.

myxml.escript is a quick hack to strip out the packages which are shown here.

Two things worth noting:

  1. Only the dependencies are shown - not the actual blinky code itself. Ie. it shows the packages loaded but not the files compiled. It presumes you know those.
  2. It shows all the dependencies - even the ones you don’t use. Nerves has different “system” packages for the different target systems (Raspberry Pi Zero, Raspbery Pi 3, Beagleboard, …) of which only one is loaded onto any given microSD for a specific board.

ssh into blinky assuming you set up your ssh keys (defaults to build machine’s key).

2.1 RPi Zero Gadget

create sd card per https://github.com/nerves-project/nerves_init_gadget

This is MicroSD Yellow-1.

2.2 RPi 4 Gadget

do same for RPi 4 (ie use MIX_TARGET=rpi0)

2.3 NeoPixel LED strip

How to wire

chip to convert 3.3V (RPi) to 5V (LED)

wire breadboard (and then protoboard) via

2.x Sanity test SBOM

applications.started_…

3. Add networking

based on https://github.com/nerves-project/nerves_examples/tree/master/hello_wifi

4. Add “Generic” Phoenix

Before customizing into an OpenC2 interface, first put a vanilla Phoenix webserver.

Start by ignoring blinky/SBOM and just make phoenix from example - https://github.com/nerves-project/nerves_examples/tree/master/hello_phoenix

Then combine with previous work

5. OpenC2 Phoenix API

Customize the Phoenix webserver for a mimimalistic OpenC2 API.

Start by ignoring previous steps and make OC2 server on your laptop using https://github.com/sparrell/openc2-lycan-beam/tree/master/haha/elixir which is in the elixir programming language using Phoenix webserver running on BEAM.

Next step is putting this server on a RPi.

Final step is combining with the previous work

6. Custom OpenC2 API

Instead of using Phoenix, use a minimalistic howegrown API (future work)