Statistics, Boot Information & Events

For IMU600-V2 / firmware 0.11.2 / GUI v1.6.1.

Complete protocol chapters: 2. Data output (2.1–2.5) · 3. Status and statistics (3.1–3.4), with full formats and field definitions.

With STAT=1, counters are captured at one common instant each second, then sent as STAT1, STAT2, STAT3, FUS and SYS, with HB when enabled. Different transmission times do not imply different snapshot times. Use STAT,now for an immediate set.

SPNVSTAT

id,dry,out,crc_err,frame_err,spi_timeout,dropped,dcnt_skip,dry_timeout,dry_kicks,dry_pin,isr_us_max,isr_us_last,isr_cpu,resync[,read_retry,read_bad]
# Field Definition / Interpretation
1 id IMU number 1–3
2 dry Cumulative DRY interrupts, about +1470/s; raw sampling count
3 out Output count; per-second increase should approach RATE
4 crc_err Internal SPI response CRC errors; normally 0
5 frame_err SPI responses carrying S / CE / IDS sensor flags; not communication errors
6 spi_timeout Internal SPI timeouts; normally 0; 100 µs timeout from fw 0.10.6
7 dropped Sampling/output queue drops; normally 0
8 dcnt_skip Discontinuous sensor sample counter: possible missed / repeated reads; normally 0
9 dry_timeout No DRY for >100 ms: 0 no, 1 yes
10 dry_kicks Extra reads to clear DRY held high; manual normal example stays at 1 after boot
11 dry_pin Current DRY level 0 / 1, usually 0
12–13 isr_us_max / isr_us_last Maximum / latest ISR duration in µs; manual reference about ≤100 µs
14 isr_cpu Last-second ISR CPU percentage for this IMU; reference about 13%
15 resync Output-boundary resynchronizations; normally 0
16 read_retry fw 0.10.6+, ASCII only; immediate retries after initial CRC failure
17 read_bad fw 0.10.6+, ASCII only; raw samples discarded after failed retry

Each raw sample requires seven sensor SPI responses; one condition can flag all seven. In the manual’s fw 0.4.3 bench test, about 5 ms of violent motion increased frame_err by 52 on each IMU while crc_err / spi_timeout stayed zero. The count does not mean there were 52 separate failures. Zero communication errors also do not rule out sensor saturation.

  1. Check crc_err / spi_timeout first, then whether one or all three sensors are affected. For shared effects, inspect vibration, motion, power and temperature.
  2. Use OUT,raw to inspect status: 16 saturation, 32 initialization, 8 / 12 sensor error. Initialization should be transient.
  3. If all three carry error flags, firmware falls back to using all three for fusion. Continued FUSED output is not proof of health; inspect RAW status and fusion flags.

SPNVFUS

outputs,rej1,rej2,rej3,incomplete,degraded,gth,ath
# Field Definition
1 outputs Total fused outputs
2–4 rej1 / rej2 / rej3 Rejected windows per IMU; error or persistent deviation, excluding PPS markers
5 incomplete Outputs produced before all three arrived
6 degraded Fewer than two usable IMUs
7–8 gth / ath Current base thresholds, °/s / m/s², ASCII 3 decimals

SPNVSYS

uart_drop,loops_per_s,isr_cpu_total,rate_hz,out_mode,uart_resets,pps_cnt,baro_samples,baro_i2c_err,baro_timeouts,baro_stale,baro_hz,proto_mode,baud,pps_state,u2_drop,trig_cnt,trig_rej
# Field Definition
1 uart_drop Whole messages dropped when UART1 transmit queue is full
2 loops_per_s Main-loop iterations in last second; manual reference about 77000
3 isr_cpu_total Combined ISR CPU percentage, reference about 40%
4 rate_hz Current IMU rate
5 out_mode none / raw / fused / both
6 uart_resets Automatic resets after UART TX stalls; normally 0
7 pps_cnt Raw PPS captures, including noise; accepted count is SPNVPPS edges
8 baro_samples Successful barometer samples; increase per second about BRATE
9 baro_i2c_err I2C NACK / collision count; normally 0
10 baro_timeouts Reinitializations after I2C timeout; normally 0
11 baro_stale No new barometer data for >200 ms: 1 yes, 0 no
12 baro_hz Barometer rate
13 proto_mode ascii / binary
14 baud Current UART1 baud
15 pps_state 0 OFF / 1 NO_SIGNAL / 2 ACQUIRING / 3 LOCKED / 4 HOLDOVER
16 u2_drop Whole messages dropped by full UART2 queue
17 trig_cnt Accepted rising edges in trigger mode; not counted in continuous mode
18 trig_rej Rejected edges from <0.5 ms glitches or trigger-event queue overflow while the main loop is busy

This is ASCII order. Binary SYS has a different layout and no baud field; use the binary offsets. HB is an optional vendor diagnostic key=value message; ordinary parsers may ignore it, controlled by HB,0 / HB,1.

Boot & Configuration Reports

Factory startup does not emit an information banner; INFO,1 requests concise reports and DBG,1 full reports. Authentication / initialization failures or a nondefault BAUD / MODE rescue prompt may be emitted automatically. Split key=value fields at the first equals sign only: build=rel=1 has value rel=1.

Message Contents
SPNVBOOT Product, fw, imus, frame, proto, baud, build; rel / bl / auth / halt / bind describe build and validation
SPNVRESET rcon plus POR, BOR, WDTO, SWR, EXTR(MCLR), CM; power-on commonly POR,BOR
SPNVAUTH / SPNVBIND / SPNVPUB auth=1 / ok=1 is normal; sn is an 18-hex-digit device serial; other fields are diagnostic
SPNVINIT,1 / 2 / 3 Per-IMU OK / FAIL; DBG may include individual sensor serials
SPNVINIT,B Barometer mode, odr, osr_p / osr_t, iir, conv_us and overruns. conv_us gives estimated / last measured / maximum measured values; measured values include 1 ms polling effects
SPNVNVM saved, stored parameters, nvm_err or backend=none; persistent configuration
SPNVCFG Active RAM settings; saved=1 does not mean all active values are saved. out 0 / 1 / 2 / 3 = none / raw / fused / both
SPNVCAL Three ab / ak records plus W with g / a weights, saved and lever; lever=1 means fixed lever-arm compensation is active
SPNVU2 out, mode, baud, drop, pps, pps_state, pps_err_ppm; available through CFG / INFO
SPNVSPI SPI mode and transaction / delivery / short-read / drop counters; see SPI chapter
SPNVNVM,boot For saved nondefault BAUD / MODE, starts at 460800 ASCII with factory_window_ms=500 for FACTORY,1 before applying saved values
SPNVDBG / SPNVHB Vendor diagnostics / key=value; may be ignored by ordinary hosts

Initialization Error Codes

Source rc Reason
IMU −2 No response, MISO all 0 / 1
IMU −3 CRC
IMU −4 Response address mismatch
IMU −5 Write verification failed
IMU −6 Abnormal post-start status
IMU −7 Other error
BARO −1 I2C NACK
BARO −2 I2C timeout
BARO −3 Chip ID mismatch
BARO −4 NVM error
BARO −5 OSR / ODR invalid

BARO overruns counts a new trigger arriving before the previous conversion finished; that conversion is skipped. Normally zero.

Fault Events

Message Condition / Action
SPNVHALT Validation failed; reports about every 2–3 s, stops measurement but accepts INFO / BOOT / FACTORY. Temporary IMU access failures retry about every 3 s; contact support if persistent
SPNVHEAL imu_reinit, mask, n. Reinitializes all three after CRC+timeout errors ≥100/s for three consecutive seconds, or initialization failure; at least 30 s between recoveries
SPNVSTALL Main loop stalled >300 ms; includes where / name. Retain report for diagnosis
SPNVTRAP CPU address, stack or arithmetic exception; reports code / name / INTCON3–5 then halts. Contact support

For support, include INFO,1, DBG,1, CFG,1 and raw recordings. Contact ethan@robotlab.com.tw.

4. Complete Boot and Event Formats

The following follows protocol section 4. <...>, ... and XX are placeholders; [...] is optional, and actual lines end in CRLF. Split key=value only at the first equals sign and allow unknown trailing fields.

SPNVBOOT

$SPNVBOOT,SparkNavi-IMU600-V2,fw=<ver>,imus=3,frame=body-FRD,proto=ascii-xor8|d644-crc16,baud=<n>,build=rel=<0/1>,bl=<0/1>,auth=<0/1>,halt=<0/1>,bind=<0/1>*XX

rel marks release, bl includes bootloader; listed factory-build flags are all 1. build=rel=1 has value rel=1.

SPNVRESET

$SPNVRESET,rcon=0x<8hex>[,POR][,BOR][,WDTO][,SWR][,EXTR(MCLR)][,CM(config mismatch)]...*XX

RCON decoding; multiple reasons can coexist. Normal power-on often reports POR,BOR.

SPNVDBG

$SPNVDBG,<free_text>*XX

DBG contains vendor diagnostic text. Its fields do not have a published fixed layout.

SPNVAUTH / SPNVBIND / SPNVPUB

$SPNVAUTH,auth=<0/1>,sn=<18hex>*XX
$SPNVBIND,<key>=<value>[,...]*XX
$SPNVPUB,<key>=<value>[,...]*XX

AUTH uses the format shown above. For BIND/PUB, only the key=value style is published; the lines above illustrate that structure. auth=1 and ok=1 indicate normal status; sn is an 18-digit hexadecimal device serial.

SPNVINIT (IMU)

$SPNVINIT,<id>,OK*XX
$SPNVINIT,<id>,OK,sn=<str>,...*XX
$SPNVINIT,<id>,FAIL,rc=<rc>,crc_err=<n>*XX

The formats above show a concise INFO success report, a detailed DBG success report, and a failure report that is always sent. sn identifies each IMU. See the rc table on this page.

SPNVINIT,B

$SPNVINIT,B,OK,odr=<hz>,mode=forced|normal*XX
$SPNVINIT,B,OK,chip=0x<hex>,rev=0x<hex>,odr=<hz>,osr_p=<n>,osr_t=<n>,iir=3,i2c_err=0,bus_recover=0,heals=0,mode=forced,conv_us=<estimated>/<last>/<max>,overruns=<n>*XX
$SPNVINIT,B,FAIL,rc=<rc>,chip=0x<hex>,i2c_err=<n>,timeouts=<n>*XX

conv_us is estimate / last measured / maximum measured, including 1 ms polling in measured values. overruns counts skipped conversions when the previous one is unfinished; normally zero.

SPNVNVM

$SPNVNVM,saved=1,baud=<n>,mode=<m>,rate=<hz>,out=<n>,stat=<n>,hb=<n>,baro=<n>,brate=<hz>,ahrs=<n>,nvm_err=<n>*XX
$SPNVNVM,saved=0 (factory defaults),nvm_err=<n>*XX
$SPNVNVM,backend=none*XX

INFO/DBG reports NVM presence and stored settings; these are alternative forms, not one fixed record.

SPNVCAL

$SPNVCAL,<imu>,ab=<bx>/<by>/<bz>,ak=<kx>/<ky>/<kz>*XX
$SPNVCAL,W,g=<w1>/<w2>/<w3>,a=<w1>/<w2>/<w3>,saved=<0/1>,lever=<0/1>*XX

The device sends the first format once per IMU, followed by the W line. ab is m/s² with 5 decimals; ak has 6 decimals. saved marks NVM calibration, lever=1 active lever-arm compensation.

SPNVCFG

$SPNVCFG,baud=<n>,mode=ascii|binary,rate=<hz>,out=<0-3>,stat=<0/1>,hb=<0/1>,baro=<0/1>,brate=<hz>,ahrs=<0/1>,gth=<f3>,ath=<f3>,akp=<f3>,aki=<f4>,saved=<0/1>,fw=<ver>[,trig=<0/1>][,azb=<0/1>]*XX

out 0/1/2/3 = none/raw/fused/both; f3/f4 means 3/4 decimals. trig appended in fw 0.9.0, azb in 0.9.1. saved=1 does not mean all RAM values are saved.

SPNVNVM,boot

$SPNVNVM,boot,baud=<n>,mode=<m>,factory_window_ms=500*XX

When saved BAUD/MODE settings differ from the defaults, the device accepts FACTORY for 500 ms at 460800 in ASCII before switching to the saved settings. It skips this wait when no settings are saved or when they match the defaults.

SPNVHALT

$SPNVHALT,<reason>*XX

Repeats about every 2–3 s; measurement stays off but INFO/BOOT/FACTORY remain available. Temporary IMU access failures retry about every 3 s.

SPNVHEAL

$SPNVHEAL,imu_reinit,mask=<bitmask>,n=<count>*XX

mask bits 0–2 identify IMU1–3; n is recovery count. Any sensor with CRC+timeouts ≥100/s for 3 s, or failed init, reinitializes all three; minimum interval 30 s.

SPNVSTALL

$SPNVSTALL,main stuck at where=<w>(<name>) for >300ms*XX

Main-loop stall over 300 ms.

SPNVTRAP

$SPNVTRAP,code=<n>,<name>,INTCON3=0x<hex>,INTCON4=0x<hex>,INTCON5=0x<hex>,halted*XX

CPU exception followed by halt; retain code, name and registers for diagnostics.

SPNVU2

$SPNVU2,out=<combination>,mode=ascii|binary,baud=<n>,drop=<n>,pps=<0/1>,pps_state=<n>,pps_err_ppm=<x>*XX

UART2 and PPS report accompanying CFG/INFO; trailing fields may be added.


Source document:IMU600-V2 Communication Protocol v1.1 · PDF pages 10–16

Read Source Pages · Document Crosswalk and Differences

Category overview · All setup guides