NVIDIA Orin Nano ยท Raspberry Pi ยท RISC-V ยท Docker
Deploy NanoSolana on real hardware using the build-tag HAL. One binary runs identically on a $50 Pi or a $500 Orin Nano โ or silently stubs on macOS for development.
NanoSolana uses a build-tag HAL so the same binary runs on real hardware or in simulation. Build tags are
automatic โ go build on Linux links hal_linux.go, everywhere else
gets hal_stub.go.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MawdBot Agent (OODA Loop) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ DeviceManager (pkg/hardware) โ
โ Modulino drivers ยท Event routing ยท Mapping โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ HAL Interface (internal/hal) โ
โ Bus ยท Device ยท GPIO ยท PWM ยท Platform โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ hal_linux.go โ hal_stub.go โ
โ (periph.io) โ (synthetic data) โ
โ Real I2C/GPIO โ Logs + mock sensors โ
โ Orin/RPi/RISCV โ macOS/Windows/CI โ
โโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
make build โ macOS stubmake orin โ NVIDIA Orinmake rpi โ Raspberry Pimake riscv โ RISC-V| Board | Arch | Build Target | I2C | GPIO | Notes |
|---|---|---|---|---|---|
| NVIDIA Orin Nano | arm64 |
make orin |
โ | โ | Primary target, /dev/i2c-1 |
| NVIDIA Orin NX | arm64 |
make orin |
โ | โ | Same as Nano |
| Raspberry Pi 5 | arm64 |
make rpi |
โ | โ | /dev/i2c-1 |
| Raspberry Pi 4B | arm64 |
make rpi |
โ | โ | /dev/i2c-1 |
| Raspberry Pi Zero 2W | arm64 |
make rpi |
โ | โ | Low RAM, works fine |
| Raspberry Pi Zero W | armv6 |
make rpi-armv6 |
โ | โ | Limited CPU |
| StarFive VisionFive 2 | riscv64 |
make riscv |
โ | โ | Experimental |
| BeagleBone AI-64 | arm64 |
make orin |
โ | โ | TI TDA4VM |
| x86 Server | amd64 |
make linux-amd64 |
โ | โ | Software-only |
| Mac (dev) | arm64/amd64 |
make build |
โ | โ | Stub mode |
# Flash JetPack 6.x via SDK Manager or SD card image # Boot into Ubuntu desktop, connect via SSH
# Check I2C buses ls /dev/i2c-* # If not present, enable in device tree sudo /opt/nvidia/jetson-io/jetson-io.py # Select "Configure Jetson 40pin Header" โ Enable I2C # Install tools sudo apt install -y i2c-tools # Test โ you should see your Modulino addresses sudo i2cdetect -y 1
# On your dev machine: make orin scp build/mawdbot-orin build/mawdbot-tui-orin user@orin-nano:~/ # On the Orin Nano: chmod +x ~/mawdbot-orin ~/mawdbot-tui-orin sudo mv mawdbot-orin /usr/local/bin/mawdbot sudo mv mawdbot-tui-orin /usr/local/bin/mawdbot-tui # Add user to i2c group (logout/login after) sudo usermod -aG i2c $USER # Initialize, configure, scan mawdbot onboard cp ~/.mawdbot/.env.example ~/.mawdbot/.env nano ~/.mawdbot/.env mawdbot hardware scan mawdbot hardware test
sudo tee /etc/systemd/system/mawdbot.service << 'EOF' [Unit] Description=MawdBot Solana Trading Agent After=network-online.target Wants=network-online.target [Service] Type=simple User=mawdbot Group=i2c EnvironmentFile=/home/mawdbot/.mawdbot/.env ExecStart=/usr/local/bin/mawdbot ooda --interval 60 Restart=always RestartSec=10 # Security NoNewPrivileges=true ProtectSystem=strict ReadWritePaths=/home/mawdbot/.mawdbot PrivateTmp=true # Device access SupplementaryGroups=i2c DeviceAllow=/dev/i2c-1 rw [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable mawdbot sudo systemctl start mawdbot sudo journalctl -u mawdbot -f
sudo raspi-config
# Interface Options โ I2C โ Enable
sudo apt install -y i2c-tools
sudo i2cdetect -y 1
# On your dev machine:
make rpi
scp build/mawdbot-rpi pi@raspberrypi:~/mawdbot
Connect Modulino nodes to the RPi's I2C pins:
Or use a Qwiic HAT / breakout for plug-and-play daisy-chaining.
All Modulino nodes connect via Qwiic (I2C daisy-chain). No soldering required.
[Orin Nano / RPi] โ โ Qwiic Cable โผ โโโโโโโโโโโโ Qwiic โโโโโโโโโโโโ Qwiic โโโโโโโโโโโโ โ Distance โ โโโโโโโโโโบ โ Movement โ โโโโโโโโโโบ โ Thermo โ โ 0x29 โ โ 0x6A โ โ 0x44 โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Qwiic โผ โโโโโโโโโโโโ Qwiic โโโโโโโโโโโโ Qwiic โโโโโโโโโโโโ โ Pixels โ โโโโโโโโโโบ โ Buzzer โ โโโโโโโโโโบ โ Buttons โ โ 0x6C โ โ 0x3C โ โ 0x7C โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ Qwiic โผ โโโโโโโโโโโโ โ Knob โ โ 0x76 โ โโโโโโโโโโโโ
| Sensor | Agent Integration |
|---|---|
Distance 0x29 |
Proximity alert โ pause trades if someone is near the hardware |
Movement 0x6A |
Vibration/tilt detection โ emergency stop on physical disturbance |
Thermo 0x44 |
Thermal throttle โ reduce activity if board overheating |
Knob 0x76 |
Live strategy tuning โ maps to position_size, stop_loss, or RSI threshold |
Buttons 0x7C |
A = force cycle ยท B = toggle simulate ยท C = checkpoint vault |
Pixels 0x6C |
OODA phase display (tealโpurpleโamberโgreen) + signal strength bar |
Buzzer 0x3C |
Trade alerts (rising tone) ยท error alerts (low tone) |
docker build -t mawdbot .
docker run --rm \ --device /dev/i2c-1 \ --env-file .env \ mawdbot ooda --interval 60
docker run --rm \ --privileged \ --env-file .env \ mawdbot ooda --interval 60
# Live sensor stream $ mawdbot hardware monitor # System status $ mawdbot status # Logs (systemd) $ journalctl -u mawdbot -f --no-pager # Resource usage (should be <10MB RSS) $ ps aux | grep mawdbot