HackerGadgets AIO Board Package

@Rex you got a different command? I ran

sudo systemctl disable meshtasticd

and it came back with that it doesn’t exist…

Is meshtastic working on your device right now?

Actually, no. I didn’t finish setup on it. Remembered that. But… in other news, the adapter seems to be much more consistent. It seems to hate reboots and is fine with more power off and back on types. Question coming on another thread! Thank you!

@Rex

It’s working :slight_smile: with A06 computing Module

The LoRa Interface config for the A06 under meshtasticd is:
Lora:

Module: serial
SerialPath: /dev/ttyACM0
BaudRate: 115200

GPS:
SerialPath: /dev/ttyACM0

SERIAL:
Enabled: true
Mode: NMEA


sudo systemctl edit meshtasticd


[Service]
ExecStart=
ExecStart=/usr/bin/meshtasticd --config /etc/meshtasticd/config.yaml


sudo systemctl stop meshtasticd
sudo systemctl daemon-reexec
sudo systemctl restart meshtasticd
journalctl -u meshtasticd -f


The RTC is not needed on the AIO board because, as I can see, the uConsole has one and it’s working well.
Enable GPS as time source (NMEA)

Create config:

sudo nano /etc/chrony/conf.d/gps.conf



refclock SHM 0 offset 0.5 delay 0.2 refid GPS
makestep 1.0 3



Restart:

sudo systemctl restart chrony


GPSD config:

sudo nano /etc/default/gpsd


DEVICES=“/dev/ttyACM0”
GPSD_OPTIONS=“-n”


sudo systemctl restart gpsd
cgps


Recommended SDR tuning for RK3399 (A06)

Reduce USB contention

echo ‘options dvb_usb_rtl28xxu disable_rc_polling=1’ | sudo tee /etc/modprobe.d/rtl2832.conf


Increase USB buffer size:

sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608


Fix SDR Driver Conflict:

sudo nano /etc/modprobe.d/rtl-sdr.conf


blacklist dvb_usb_rtl28xxu
blacklist rtl2832


have fun guys :slight_smile:

As I have a working Kali linux for the A06 I will let you know

3 Likes

Some updates and fine tuning for the GPS receiver for multiple process accessibility:

1. Stop Conflicts

Before starting, please make sure nothing is locked /dev/ttyACM0.

To check which process using the GPS receiver at the moment:

lsof /dev/ttyACM0

ls -l /dev/serial/by-id/

In my case:

  • Stop gpsd if it is currently using the serial port directly:

    sudo systemctl stop gpsd
    
    sudo systemctl stop gpsd.socket
    

    Ensure meshtasticd is not trying to open /dev/ttyACM0 in its config.yaml.

    sudo systemctl status meshtasticd.service
    
    
    

Check baud rate (optional but recommended):

stty -F /dev/ttyACM0

Common GPS baud rates:

  • 9600

2. Configure gpsd (critical)

Edit gpsd defaults:

sudo nano /etc/default/gpsd

Set exactly:

START_DAEMON="true"
GPSD_OPTIONS="-n"
DEVICES="/dev/ttyACM0"
USBAUTO="false"

Explanation:

  • -n forces gpsd to read immediately (important for headless systems)

  • USBAUTO=false prevents gpsd from grabbing the device twice

Enable and start gpsd:

sudo systemctl enable gpsd
sudo systemctl restart gpsd


3. Verify gpsd is working

Run:

cgps -s

You should see:

  • Satellites

  • Fix status

  • Latitude / longitude


4. Configure Meshtastic (NO serial port)

Edit Meshtastic config:

sudo nano /etc/meshtasticd/config.yaml

Use gpsd, not a serial device:

GPS:
  Enabled: true
  Gpsd:
    Enabled: true
    Host: localhost
    Port: 2947

:warning: Important:

  • Remove or comment out SerialPath

  • Meshtastic must NOT touch /dev/ttyACM0

Restart Meshtastic:

sudo systemctl restart meshtasticd

Verify:

meshtastic --info

You should see GPS data populated.


5. Configure Kismet (if you have it)

Kismet supports gpsd natively.

Edit (or create):

sudo nano /etc/kismet/kismet.conf

Add or ensure:

gps=gpsd:host=localhost,port=2947

Restart Kismet:

sudo systemctl restart kismet

Check Kismet UI → GPS active


6. Configure tar1090 / dump1090

tar1090 and dump1090 already support gpsd.

Check config file (location varies):

Common paths:

  • /etc/default/dump1090-fa

  • /etc/default/readsb

Ensure gpsd is enabled:

GPSD_HOST="localhost"
GPSD_PORT="2947"

Restart:

sudo systemctl restart dump1090-fa || sudo systemctl restart readsb

Verify aircraft map shows receiver location.


7. Final conflict check (important)

Ensure nothing else opens the serial device:

sudo lsof /dev/ttyACM0

Expected output:

gpsd    PID   gpsd   ... /dev/ttyACM0

If you see anything else → misconfiguration.


OPTIONAL — Debugging tools

Watch raw NMEA from gpsd

gpspipe -r

Watch JSON stream

gpspipe -w

Check gpsd socket

ss -lnpt | grep 2947

I hope it’s helps :smile:

3 Likes

Other option:

Use gpsd, not a serial device:

GPS:
  Enabled: true
  Gpsd:
    Enabled: true
    

Just let meshtasticd handle the GPS

1 Like

since when does meshtastic support GPSd? last time I looked into this they did weird stuff with the GPS that required full serial access and they only had stale feature requests and workarounds to share the GPS between multiple services

Thanks for the information. I try to share GPS data only with other processes like Kismet and tar1090.

Under meshtasticd config.yaml I use this:

GPS:
  Enabled: true


i also tried to do the same. but i cannot get GPS to start with GPSD. running meshtasticd with debug turned out has a line that says “Run without GPS”.

@Sh4d0wCr0w does your debug log say that GPS is on?

Thanks

I am so sorry for this noob question but trying to read here and find out what is the best image for clockwork pi cm4 with hacker gadgets v2 aio board? Got the uconsole in today used from ebay and aio will be in later this week and was trying to get a sd card flashed and ready to go. I downloaded dragonos-6.12.48 and flashed with balena but screen comes up blank. Thanks again and 73

Can you send me what you see and where?
At my end, the GPS is sending the information to meshtastic.

With this command, you can see how many processes are trying to use GPS:

sudo lsof /dev/ttyACM0




If you see two or more, this means there is a conflict with resources because at once, only one process can interact with the GPS to receive information. This is why a “proxy” for the GPS information is needed to share it with multiple processes.
At the moment I share the GPS data with meshtastic, kismet, tar1090

Just trying to confirm something. The SDR on here should show up under usb correct?

yes the SDR is a usb device

weird, mine stopped showing up.

Need help in deciding on a purchase.

I have the V1 AIO board.

The V2 AIO board is more or less the same but for the following improvements:

  • USB-A on the side will be replaced by an RJ45 Gigabit Ethernet
  • GPIOs will control the power of the GPS/LoRa/RTL-SDR/Internal USB ports
  • USB-C ports will be USB 3.0 when using CM5

I am more confused with this one, though: https://hackergadgets.com/products/uconsole-upgrade-kit?variant=47045223415982

This mainly adds NVMe support?

If I want NVMe, do I need to purchase the adapter board as well as the NVMe battery board, correct?

And what are the 2 expansion boards? The one which does not have AIO V2 doesn’t have LORA, SDR, GPS?

Sorry if there are too many questions, it’s just a bit confusing.

I mainly want to get the NVMe support.

Yes you need both the adapter and NVME for NVME to work.

The AIO V2 has lora/sdr/etc.

The other board “only” has USB and ethernet.

1 Like

Hi Rex.I use CM5,but why my pygpsclient cannt work?

which AIO board are you using?

have you tried all of the listed serial ports?

this include AIO V2

bored99 <notifications@clockworkpi.discoursemail.com>于2026年1月10日 周六下午7:15写道: