Custom compile für arm32bit - no GPS?

Hi there!

I’ve a bunch of Raspberry Pi 1 Modell B+ (arm 32bit) around and want to use them for meshtasticd as they have still plenty of resources to do this job.

With some cross compiler work I’ve managed to get a working meshtasticd for arm 32bit which starts and works fine on 32bit bookworm for arm with the Waveshare LORA Hat connected to the Raspberry Pi.

But one thing differs to from the stock debian package for the 64bit platform: there is no GPS. Even in the log I can’t see any GPS messages. config.yaml is fine, serial is enabled and successfully tested one the 32bit Pi, the Hat is sending GPS informations. On the 64bit Raspberry Pi it works perfect.

At the moment it seems that there is no GPS support at all compiled into the binary. On the other hand i can see:

Compiling .pio/build/native/src/gps/GPS.cpp.o
Compiling .pio/build/native/src/gps/NMEAWPL.cpp.o
Compiling .pio/build/native/src/gps/RTC.cpp.o

I’ve tried to add #define HAS_GPS 1 in src/configuration.h and variants/portduino/variant.h but without success.

Maybe this sounds a bit silly questions, but it’s my goal to get this running on the older 32bit arm architecture is it is still sufficient.

Does anyone has an idea?

Can you confirm the gps functioning on the Pi 1 ?

Can you detail/describe this in more detail ?

Oh and also can you post a Meshtasticd bootlog for the working Pi4 GPS ?

Hi Mark,

thanks for getting into this!

When I do a cat /dev/ttyAMA0 I can see that the GPS from the Waveshare HAT is working:

$GLGSV,2,2,06,79,13,230,,69,29,323,,0*74
$GNRMC,084049.000,V,,,,,,,260124,,,N,V*2B
$GNVTG,,,,,,,,,N*2E
$GNZDA,084049.000,26,01,2024,00,00*48
$GPTXT,01,01,01,ANTENNA OK*35
$GNGGA,084050.000,,,,,0,00,6.3,,,,,,*44

My /boot/config.txt has:

enable_uart=1
dtoverlay=uart0

And the config.yaml

### Define GPS

GPS:
  SerialPath: /dev/ttyAMA0

The cross compiler process is a bit complicated. After some fiddling I’ve realized that platformio does not have a arm32 toolchain for debian 64bit. Thus it is not possible to build for the Raspberry Pi 32bit on a 64bit Ubuntu. I’ve ended in getting

onto my Ubuntu system and chroot into that. From here I’ve installed all necessary tools (python3, pip, platformio, lib dev packages, …) and clone the meshtastic firmware git into the chroot arm32v5 environment. From this point I was able to successful compile the native variant for arm32.

And this really works. All the LORA stuff works out of the box on the 32bit Raspberry Pi. Only the GPS thing and/or position module does not show any activity.

At the moment I don’t have the time to switch back to the 64bit Raspberry Pi 3 B+, but will do so as soon I have some time to send you the startup log. But I’m quite sure, that with the deb package meshtasticd does have some GPS messages and tries to connect to the GPS radio via serial.

1 Like

As requested here is the startup log from the Raspberry Pi 3 B+ with the meshtasticd from the official deb package. All this GPS messages does not appear on my own build arm32 binary. Still wondering if I’ve missed anything in the build process (pio run -e native).

Portduino is starting, HWID=1, VFS root at /root/.portduino/default
Setting up Meshtastic on Portduino...
��@INFO  | ??:??:?? 0 

//\ E S H T /\ S T / C

DEBUG | ??:??:?? 0 Filesystem files:
DEBUG | ??:??:?? 0  /.. (0 Bytes)
DEBUG | ??:??:?? 0  /prefs/module.proto (98 Bytes)
DEBUG | ??:??:?? 0  /prefs/.. (0 Bytes)
DEBUG | ??:??:?? 0  /prefs/channels.proto (142 Bytes)
DEBUG | ??:??:?? 0  /prefs/config.proto (93 Bytes)
DEBUG | ??:??:?? 0  /prefs/. (0 Bytes)
DEBUG | ??:??:?? 0  /prefs/db.proto (458 Bytes)
DEBUG | ??:??:?? 0  /. (0 Bytes)
INFO  | ??:??:?? 0 Scanning for i2c devices...
DEBUG | ??:??:?? 0 Scanning for i2c devices on port 1
INFO  | ??:??:?? 0 No I2C devices found
INFO  | ??:??:?? 0 Meshtastic hwvendor=37, swver=2.2.18.e9bde80
INFO  | ??:??:?? 0 Initializing NodeDB
INFO  | ??:??:?? 0 Loading /prefs/db.proto
INFO  | ??:??:?? 0 Loaded saved devicestate version 22
INFO  | ??:??:?? 0 Loading /prefs/config.proto
INFO  | ??:??:?? 0 Loaded saved config version 22
INFO  | ??:??:?? 0 Loading /prefs/module.proto
INFO  | ??:??:?? 0 Loaded saved moduleConfig version 22
INFO  | ??:??:?? 0 Loading /prefs/channels.proto
INFO  | ??:??:?? 0 Loaded saved channelFile version 22
/root/.portduino/default/oem/oem.proto does not exist
INFO  | ??:??:?? 0 No /oem/oem.proto preferences found
DEBUG | ??:??:?? 0 cleanupMeshDB purged 0 entries
WARN  | ??:??:?? 0 Using nodenum 0xeb5466ec 
DEBUG | ??:??:?? 0 Expanding short PSK #1
INFO  | ??:??:?? 0 Wanted region 3, using EU_868
DEBUG | ??:??:?? 0 region=3, NODENUM=0xeb5466ec, dbsize=4
DEBUG | ??:??:?? 0 Read RTC time as 1706269395
INFO  | ??:??:?? 0 Setting GPS power=1
DEBUG | ??:??:?? 0 WANT GPS=1
INFO  | ??:??:?? 0 Setting GPS power=1
DEBUG | ??:??:?? 0 NeighborInfoModule is disabled
/root/.portduino/default/prefs/cannedConf.proto does not exist
INFO  | ??:??:?? 0 No /prefs/cannedConf.proto preferences found
INFO  | ??:??:?? 0 CannedMessageModule is enabled
WARN  | ??:??:?? 0 SX126xInterface(cs=21, irq=16, rst=18, busy=20)
DEBUG | ??:??:?? 0 SX126X_DIO3_TCXO_VOLTAGE not defined, not using DIO3 as TCXO reference voltage
INFO  | ??:??:?? 0 Starting meshradio init...
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=0, time 231 ms
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=253, time 2115 ms
INFO  | ??:??:?? 0 Radio freq=869.525, config.lora.frequency_offset=0.000
INFO  | ??:??:?? 0 Set radio: region=EU_868, name=LongFast, config=0, ch=0, power=27
INFO  | ??:??:?? 0 Radio myRegion->freqStart -> myRegion->freqEnd: 869.400024 -> 869.650024 (0.250000 mhz)
INFO  | ??:??:?? 0 Radio myRegion->numChannels: 1 x 250.000kHz
INFO  | ??:??:?? 0 Radio channel_num: 1
INFO  | ??:??:?? 0 Radio frequency: 869.525024
INFO  | ??:??:?? 0 Slot time: 42 msec
INFO  | ??:??:?? 0 Set radio: final power level=22
INFO  | ??:??:?? 0 SX126x init result 0
INFO  | ??:??:?? 0 Frequency set to 869.525024
INFO  | ??:??:?? 0 Bandwidth set to 250.000000
INFO  | ??:??:?? 0 Power output set to 22
DEBUG | ??:??:?? 0 Current limit set to 140.000000
DEBUG | ??:??:?? 0 Current limit set result 0
DEBUG | ??:??:?? 0 Setting DIO2 as RF switch
DEBUG | ??:??:?? 0 SX126X_RXEN not defined, defaulting to RADIOLIB_NC
DEBUG | ??:??:?? 0 SX126X_TXEN not defined, defaulting to RADIOLIB_NC
DEBUG | ??:??:?? 0 Using MCU pin -1 as RXEN and pin -1 as TXEN to control RF switching
INFO  | ??:??:?? 0 Set RX gain to boosted mode; result: 0
INFO  | ??:??:?? 0 SX1262 Radio init succeeded, using SX1262 radio
DEBUG | ??:??:?? 0 Initializing MQTT
INFO  | ??:??:?? 0 API server listening on TCP port 4403
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=237, time 2000 ms
DEBUG | ??:??:?? 0 LoRA bitrate = 118.500000 bytes / sec
INFO  | ??:??:?? 0 PowerFSM init, USB power=1
DEBUG | ??:??:?? 0 Enter state: BOOT
DEBUG | ??:??:?? 0 [GPS] Probing for GPS at 9600 
INFO  | ??:??:?? 0 [GPS] L76K GNSS init succeeded, using L76K GNSS Module
DEBUG | ??:??:?? 1 [GPS] publishing pos@0:2, hasVal=0, Sats=0, GPSlock=0
DEBUG | ??:??:?? 1 [GPS] No GPS lock
DEBUG | ??:??:?? 1 [GPS] onGPSChanged() pos@0, time=0, lat=0, lon=0, alt=0
INFO  | ??:??:?? 1 [GPS] updatePosition LOCAL pos@0, time=0, latI=0, lonI=0, alt=0
DEBUG | ??:??:?? 1 [GPS] Setting local position: latitude=0, longitude=0, time=0
DEBUG | ??:??:?? 1 [GPS] Node status update: 0 online, 4 total

I simply used the 32bit Debian Bookworm OS to build a 32-bit binary for my Pi0W (i cant find my Pi 1)

But my next venture will by looking at possibility of running Meshtasticd Native on MilkV-Duo Riscv64
For this i already have USB input working on MilkV Duo - https://www.youtube.com/watch?v=Swo-zJ6brQI

and found a platform io platform for riscv

1 Like

As a test i tried connecting a USB GPS since i have a USB CH341-SX1262 DIY device running on my Ubuntu 22.04 Desktop


Bootlog

Portduino is starting, HWID=1, VFS root at /root/.portduino/default
Setting up Meshtastic on Portduino...
��@INFO  | ??:??:?? 0 

//\ E S H T /\ S T / C

DEBUG | ??:??:?? 0 Filesystem files:
DEBUG | ??:??:?? 0  /prefs/channels.proto (53 Bytes)
DEBUG | ??:??:?? 0  /prefs/.. (0 Bytes)
DEBUG | ??:??:?? 0  /prefs/. (0 Bytes)
DEBUG | ??:??:?? 0  /prefs/config.proto (88 Bytes)
DEBUG | ??:??:?? 0  /prefs/db.proto (232 Bytes)
DEBUG | ??:??:?? 0  /prefs/module.proto (111 Bytes)
DEBUG | ??:??:?? 0  /.. (0 Bytes)
DEBUG | ??:??:?? 0  /. (0 Bytes)
INFO  | ??:??:?? 0 Scanning for i2c devices...
DEBUG | ??:??:?? 0 Scanning for i2c devices on port 1
DEBUG | ??:??:?? 0 I2C device found at address 0x3c
INFO  | ??:??:?? 0 ssd1306 display found
INFO  | ??:??:?? 0 ssd1306 display found
DEBUG | ??:??:?? 0 0x7 subtype probed in 2 tries 
INFO  | ??:??:?? 0 1 I2C devices found
INFO  | ??:??:?? 0 Meshtastic hwvendor=37, swver=2.2.20.062c6468
INFO  | ??:??:?? 0 Initializing NodeDB
INFO  | ??:??:?? 0 Loading /prefs/db.proto
INFO  | ??:??:?? 0 Loaded saved devicestate version 22
INFO  | ??:??:?? 0 Loading /prefs/config.proto
INFO  | ??:??:?? 0 Loaded saved config version 22
INFO  | ??:??:?? 0 Loading /prefs/module.proto
INFO  | ??:??:?? 0 Loaded saved moduleConfig version 22
INFO  | ??:??:?? 0 Loading /prefs/channels.proto
INFO  | ??:??:?? 0 Loaded saved channelFile version 22
/root/.portduino/default/oem/oem.proto does not exist
INFO  | ??:??:?? 0 No /oem/oem.proto preferences found
DEBUG | ??:??:?? 0 cleanupMeshDB purged 0 entries
WARN  | ??:??:?? 0 NOTE! Our desired nodenum 0x1 is invalid or in use, so trying for 0x6b8b456b
WARN  | ??:??:?? 0 Using nodenum 0x6b8b456b 
DEBUG | ??:??:?? 0 Expanding short PSK #1
INFO  | ??:??:?? 0 Wanted region 3, using EU_868
DEBUG | ??:??:?? 0 region=3, NODENUM=0x6b8b456b, dbsize=2
DEBUG | ??:??:?? 0 Read RTC time as 1706276698
DEBUG | ??:??:?? 0 Running without GPS.
DEBUG | ??:??:?? 0 NeighborInfoModule is disabled
/root/.portduino/default/prefs/cannedConf.proto does not exist
INFO  | ??:??:?? 0 No /prefs/cannedConf.proto preferences found
INFO  | ??:??:?? 0 CannedMessageModule is enabled
i2csetClock is not implemented
INFO  | ??:??:?? 0 Turning on screen
DEBUG | ??:??:?? 0 Module wants a UI Frame
WARN  | ??:??:?? 0 SX126xInterface(cs=0, irq=6, rst=2, busy=4)
DEBUG | ??:??:?? 0 SX126X_DIO3_TCXO_VOLTAGE not defined, not using DIO3 as TCXO reference voltage
INFO  | ??:??:?? 0 Starting meshradio init...
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=0, time 231 ms
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=253, time 2115 ms
INFO  | ??:??:?? 0 Radio freq=869.525, config.lora.frequency_offset=0.000
INFO  | ??:??:?? 0 Set radio: region=EU_868, name=LongFast, config=0, ch=0, power=27
INFO  | ??:??:?? 0 Radio myRegion->freqStart -> myRegion->freqEnd: 869.400024 -> 869.650024 (0.250000 mhz)
INFO  | ??:??:?? 0 Radio myRegion->numChannels: 1 x 250.000kHz
INFO  | ??:??:?? 0 Radio channel_num: 1
INFO  | ??:??:?? 0 Radio frequency: 869.525024
INFO  | ??:??:?? 0 Slot time: 42 msec
INFO  | ??:??:?? 0 Set radio: final power level=22
INFO  | ??:??:?? 0 SX126x init result 0
INFO  | ??:??:?? 0 Frequency set to 869.525024
INFO  | ??:??:?? 0 Bandwidth set to 250.000000
INFO  | ??:??:?? 0 Power output set to 22
DEBUG | ??:??:?? 0 Current limit set to 140.000000
DEBUG | ??:??:?? 0 Current limit set result 0
DEBUG | ??:??:?? 0 Setting DIO2 as RF switch
DEBUG | ??:??:?? 0 Using MCU pin -1 as RXEN and pin -1 as TXEN to control RF switching
INFO  | ??:??:?? 0 Set RX gain to boosted mode; result: 0
INFO  | ??:??:?? 0 SX1262 Radio init succeeded, using SX1262 radio
INFO  | ??:??:?? 0 API server listening on TCP port 4403
DEBUG | ??:??:?? 0 (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=237, time 2000 ms
DEBUG | ??:??:?? 0 LoRA bitrate = 118.500000 bytes / sec
INFO  | ??:??:?? 0 PowerFSM init, USB power=1
DEBUG | ??:??:?? 0 Enter state: BOOT
DEBUG | ??:??:?? 0 [Screen] Screen: Started...
INFO  | ??:??:?? 5 [Screen] Done with boot screen...
DEBUG | ??:??:?? 5 [Screen] showing standard frames
DEBUG | ??:??:?? 5 [Screen] Showing 0 module frames
DEBUG | ??:??:?? 5 [Screen] Total frame count: 103
DEBUG | ??:??:?? 5 [Screen] Added modules.  numframes: 0
DEBUG | ??:??:?? 5 [Screen] Finished building frames. numframes: 4
INFO  | ??:??:?? 30 [NodeInfoModule] Sending our nodeinfo to mesh (wantReplies=1)
INFO  | ??:??:?? 30 [NodeInfoModule] sending owner !327b23ca/Meshtastic 0001/NODE
DEBUG | ??:??:?? 30 [NodeInfoModule] Initial packet id 846930886, numPacketId 4294967295
DEBUG | ??:??:?? 30 [NodeInfoModule] Update DB node 0x6b8b456b, rx_time=0
DEBUG | ??:??:?? 30 [NodeInfoModule] handleReceived(LOCAL) (id=0x327b23c8 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x0 Portnum=4 WANTRESP priority=10)
DEBUG | ??:??:?? 30 [NodeInfoModule] No modules interested in portnum=4, src=LOCAL
DEBUG | ??:??:?? 30 [NodeInfoModule] localSend to channel 0
DEBUG | ??:??:?? 30 [NodeInfoModule] Add packet record (id=0x327b23c8 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x0 Portnum=4 WANTRESP priority=10)
DEBUG | ??:??:?? 30 [NodeInfoModule] Expanding short PSK #1
DEBUG | ??:??:?? 30 [NodeInfoModule] Using AES128 key!
DEBUG | ??:??:?? 30 [NodeInfoModule] Installing AES128 key!
DEBUG | ??:??:?? 30 [NodeInfoModule] enqueuing for send (id=0x327b23c8 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=10)
DEBUG | ??:??:?? 30 [NodeInfoModule] txGood=0,rxGood=0,rxBad=0
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
WARN  | ??:??:?? 30 [RadioIf] Can not send yet, busyRx
DEBUG | ??:??:?? 30 [RadioIf] Ignore false preamble detection.
DEBUG | ??:??:?? 30 [RadioIf] Starting low level send (id=0x327b23c8 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=10)
DEBUG | ??:??:?? 30 [RadioIf] (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=66, time 722 ms
DEBUG | ??:??:?? 30 [RadioIf] AirTime - Packet transmitted : 722ms
GPIOPin::callISR(GPIO6, 6)
DEBUG | ??:??:?? 31 [RadioIf] Completed sending (id=0x327b23c8 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=10)
GPIOPin::callISR(GPIO6, 6)
DEBUG | ??:??:?? 33 [RadioIf] (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=69, time 747 ms
ERROR | ??:??:?? 33 [RadioIf] ignoring received packet due to error=-7
DEBUG | ??:??:?? 33 [RadioIf] AirTime - Packet received (noise?) : 747ms
GPIOPin::callISR(GPIO6, 6)
DEBUG | ??:??:?? 34 [RadioIf] (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=66, time 722 ms
ERROR | ??:??:?? 34 [RadioIf] ignoring received packet due to error=-7
DEBUG | ??:??:?? 34 [RadioIf] AirTime - Packet received (noise?) : 722ms
INFO  | ??:??:?? 45 [DeviceTelemetryModule] (Sending): air_util_tx=0.020056, channel_utilization=3.651667, battery_level=0, voltage=0.000000
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] updateTelemetry LOCAL
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Node status update: 0 online, 2 total
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] showing standard frames
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Showing 0 module frames
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Total frame count: 103
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Added modules.  numframes: 0
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Finished building frames. numframes: 4
INFO  | ??:??:?? 45 [DeviceTelemetryModule] Sending packet to mesh
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Update DB node 0x6b8b456b, rx_time=0
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] handleReceived(LOCAL) (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x0 Portnum=67 priority=1)
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] No modules interested in portnum=67, src=LOCAL
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] localSend to channel 0
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Add packet record (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x0 Portnum=67 priority=1)
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Expanding short PSK #1
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Using AES128 key!
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Installing AES128 key!
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] enqueuing for send (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=1)
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] txGood=1,rxGood=0,rxBad=2
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Using channel 0 (hash 0x8)
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Expanding short PSK #1
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Using AES128 key!
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] Installing AES128 key!
DEBUG | ??:??:?? 45 [DeviceTelemetryModule] decoded message (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x0 Portnum=67 priority=1)
DEBUG | ??:??:?? 45 [RadioIf] Starting low level send (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=1)
DEBUG | ??:??:?? 45 [RadioIf] (bw=250, sf=11, cr=4/5) packet symLen=8 ms, payloadSize=37, time 509 ms
DEBUG | ??:??:?? 45 [RadioIf] AirTime - Packet transmitted : 509ms
GPIOPin::callISR(GPIO6, 6)
DEBUG | ??:??:?? 45 [RadioIf] Completed sending (id=0x327b23c9 fr=0x6b to=0xff, WantAck=0, HopLim=3 Ch=0x8 encrypted priority=1)
GPIOPin::callISR(GPIO6, 6)

But it also just skips any GPS probing detection/check so similar to your Pi1

I did just use different devices - My Desktop - USB LoRa and USB GPS

CH341 USB Adapter with the Waveshare SXXX HAT (without GPS) and SDD1306 I2C OLED

there is a bug in 2.2.19 related to GPS. Use 2.2.18 instead.

1 Like

Thank you, tested with the gps-work branch getting GPS debug output- USB connected GPS

INFO  | ??:??:?? 0 API server listening on TCP port 4403
INFO  | ??:??:?? 0 PowerFSM init, USB power=1
INFO  | ??:??:?? 1 [GPS] Found a UBlox Module using baudrate 9600
INFO  | ??:??:?? 1 [GPS] GNSS configured for GPS+SBAS. Pause for 0.75s before sending next command.
INFO  | ??:??:?? 2 [GPS] GNSS module configuration saved!
WARN  | ??:??:?? 2 [GPS] GPS FactoryReset requested
INFO  | ??:??:?? 3 [GPS] Saving /prefs/db.proto
INFO  | 14:31:57 3 [GPS] updatePosition LOCAL pos@65b3a63d, time=1706279517, latI=-xx4922061, lonI=xx3852980, alt=1536
INFO  | 14:31:57 3 [GPS] Sending smart pos@65b3a63d:6 to mesh (distanceTraveled=4228628.000000m, minDistanceThreshold=100m, timeElapsed=3043ms)
INFO  | 14:31:57 3 [GPS] Providing time to mesh 1706279517
INFO  | 14:31:57 3 [GPS] Position reply: time=1706279517, latI=-xx4922061, lonI=-xx3852980
GPIOPin::callISR(GPIO6, 6)
INFO  | 14:31:59 5 [Screen] Done with boot screen...
GPIOPin::callISR(GPIO6, 6)
INFO  | 14:32:01 7 [Router] Received position from=0xe71ca824, id=0x7bec1a5a, portnum=3, payloadlen=5
INFO  | 14:32:01 7 [Router] POSITION node=e71ca824 l=5 latI=0 lonI=0 msl=0 hae=0 geo=0 pdop=0 hdop=0 vdop=0 siv=0 fxq=0 fxt=0 pts=0 time=1706279518
INFO  | 14:32:01 7 [Router] Received routing from=0xe71ca824, id=0x7bec1a5a, portnum=3, payloadlen=5
INFO  | 14:32:01 7 [Router] Heard a node on channel 0 we don't know, sending NodeInfo and asking for a response.
1 Like

Doh! Fix is coming: Use correct define for native gos by jp-bennett · Pull Request #3133 · meshtastic/firmware · GitHub

2 Likes

I did a re-compile while you were doing fix - it much quicker to test on Desktop that moving to Pi

Thanks for this tip! But this was not successful. I’ve checkout this tag:

v2.2.18.e9bde80

But during build this error is thrown:

Compiling .pio/build/raspbian/src/input/LinuxInput.cpp.o
*** [.pio/build/raspbian/src/PowerFSM.cpp.o] Error 1
In file included from .pio/libdeps/raspbian/RadioLib/src/RadioLib.h:88,
                 from src/mesh/../platform/portduino/SimRadio.h:8,
                 from src/mesh/MeshService.h:14,
                 from src/graphics/Screen.cpp:29:
.pio/libdeps/raspbian/RadioLib/src/modules/SX123x/SX1233.h:23:30: error: expected class-name before ‘{’ token
   23 | class SX1233: public SX1231  {
      |                              ^
*** [.pio/build/raspbian/src/graphics/Screen.cpp.o] Error 1

My knowledge in platformio and it’s build process is limited, so I don’t know how to fix that …

In platform.ini line 71 remove the caret ^ after the @ and compile again.
jgromes/RadioLib@6.3.0

2 Likes

Okay, I’ve learned what the “^” before a version number means :smiley: Thanks!

Thank you!!! GPS is now working on latest master variant native on my 32bit Raspberry Pi :hugs:

could you kindly confirm the output of running file on your compiled binary

file program

I’ve compiled the latest master with variant native. The file information:

pi@raspberrypi:~/meshtastic/native $ file program 
program: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.3, BuildID[sha1]=90c016eff3dce290fee288b64343e6e702c4709a, for GNU/Linux 3.2.0, with debug_info, not stripped

But I must admit that I have to copy the library folder from my build rootfs, which is arm32, to the Pi and add the folder to

/etc/ld.so.conf.d/meshtastic.conf

I don’t know why but the binary does not accept the already installed libraries despite they look the same. This is a mystery to me.

Copied library:

pi@raspberrypi:~/meshtastic $ file arm-linux-gnueabi/libgpiod.so.2.2.2 
arm-linux-gnueabi/libgpiod.so.2.2.2: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=d5667287d4e4a1022685853e8ee6a4f29c1da89e, stripped

Versus system library from the Pi distribution:

pi@raspberrypi:~/meshtastic $ file /usr/lib/arm-linux-gnueabihf/libgpiod.so.2.2.2
/usr/lib/arm-linux-gnueabihf/libgpiod.so.2.2.2: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=d3d124faa2da23615dc352e9d8ca8dcb938b8641, stripped

Hope this helps!

I simply used the 32bit Debian Bookworm OS to build a 32-bit binary for my Pi0W (i cant find my Pi

Confirmed sing the 32bit Raspberry Pi OS Bookworm produces a compatible binary that will run on Pi zero

n

Pi zero and Pi 1 both use same archiecture cpu

1 Like

I’ll try the same the next days … maybe then I don’t need to copy the libraries from the build system to the target system …

Is this an Intel/AMD x86 system with a 32bit Debian Bookworm?

No using Raspberrypi