SymX Embedded Systems

Onboarding and training manual. The whole embedded estate, the knowledge held by the engineers who built it, and how every layer of it powers X.Fleet, X.Dispatch, X.Machines, X.Tires, X.Parts, X.EAM and X.Connect.

SymX · Learning manual · September 2026 · Confidential

Before you start

Who this is forAn engineer taking ownership of part or all of the SymX embedded estate: firmware, board support, radio, connectivity or the in cab tablet.
Assumed knowledgeEmbedded Linux, C and Java, and the command line. No prior knowledge of CAN, J1939, Yocto on this platform, or the SymX product line is assumed.
TimeAbout six hours to read, plus the companion body of knowledge on SocketCAN and J1939, which is another four.
Completion barSeven of the nine knowledge checks correct, plus the bench exercise in section 14.4.
Access to request on day oneJira projects FW, TAB, HD, FS and OO4. Confluence spaces hardware and TECH, and read access to the two personal spaces noted in section 13. The symboticware GitHub organisation. Cloud console read access for the device messaging account. A briefing on the licensed SAE signal annex handling rules.
CompanionSocketCAN and J1939 at SymX, a body of knowledge. Read section 4 of this manual first, then that document in full, then return here at section 5.

What this manual is

SymX has built a large embedded estate over several years, and most of what is known about it lives in the heads of the engineers who built each part, spread across roughly forty Confluence pages, several hundred Jira issues and six repositories. This manual is the consolidation. It carries the platform, the protocols, the field reality, the traps that have already cost the company time, and the working practices that keep the estate honest.

It is written to be learned from. Read it in order the first time. The knowledge checks are placed where a misunderstanding would be expensive, so answer them before reading on. The bar at the bottom tracks progress.

Every layer ends with the same question answered explicitly: which product does this power, and what breaks commercially if it is wrong. That thread is the point of the manual.

One rule about the written record, before anything else

Read Confluence in date order. The corpus contains several explicit self corrections where a conclusion was investigated, published, then overturned. The clearest examples: a CPU profiling conclusion that was later withdrawn, a cloud topic scheme that was superseded, a tyre sensor checksum declared non existent and later cracked, and a positioning gap that turned out to be scoped differently. Reading out of order means absorbing a retracted conclusion as current, and at least one engineer has already lost days to it.

The second rule: the repositories are the record and the ticket tracker is a comment thread. Ticket status has been wrong in both directions. Nothing is done or not done without a pull request.

  1. The product line, and what the hardware is for
  2. The platform: SymBot 6, SymBot 5, XTablet
  3. The software estate
  4. Machine data acquisition
  5. Board support, image and over the air update
  6. Time, and why the clock is a revenue problem
  7. Radio and tyre pressure monitoring
  8. Connectivity: LTE, mesh and the tablet uplink
  9. The XTablet programme
  10. Bluetooth zones and reverse tracking
  11. The asset register and X.EAM
  12. Field operations and the fleet as it really is
  13. The knowledge ledger
  14. Working practices
  15. Reference index
  16. The ten things to carry out

1. The product line, and what the hardware is for

The SymX product surface covers eight named areas. Every one of them is fed by the same edge estate, and every embedded decision in this manual eventually shows up in one of them.

SENSING, ON THE MACHINE CAN and J1939Engine, transmission,brakes, payload, faults Cat Data LinkLegacy Caterpillar bus,350 tag reference Sub GHz radio433.92 MHz, 2FSKSST, TireCheck, DG, LDL GNSS and IMUPosition, 416 Hz acceland gyro BluetoothBeacons, zoneresolution underground OperatorXTablet screen,inspections, dispatch THE EDGE: SymBot 6 and XTablet Qualcomm QCM2290 on Quectel SC206E · kernel 5.4 · PIC18F47Q43 auxiliary controller · Yocto image · pulse-daemon Decode · quality flagging · local store · compression · store and forward · over the air update · remote shell Backhaul · X.Connect LTE where it exists · Wi-Fi mesh and HaLow underground · satellite on remote sites · MQTT to the cloud THE PRODUCTS X.Fleet and X.DispatchPosition, machine state, cycle timingAssignment and routing decisionsNeeds: accurate time, position, bus state X.MachinesUtilisation, idling, payload, healthAlarms and notification centreNeeds: correct decode, no fabricated values X.TiresPressure, temperature, leak modelsTyre life and cost per hourNeeds: radio yield and no phantom sensors X.EAM and X.PartsAsset register, work orders, sparesComponent replacement historyNeeds: component identity from the bus THE SAME DEFECT, SEEN FROM EACH PRODUCT A clock that resets to 1970 → X.Dispatch cycle times are wrong · X.Machines utilisation is wrong · the device stops uploading entirely and reports no fault. A clamped out of range reading → X.Machines shows a clean maximum for an unplugged sensor · X.EAM raises a work order against a component that is fine. A radio frame accepted without checksum → X.Tires invents sensors that do not exist and reports pressures for tyres that are not there.
One estate, one product surface. The lower band of the diagram is restated below, because it is the reason embedded defects are never only embedded defects.

The same defect, seen from each product

Defect at the edgeWhat the customer sees
A clock that resets to 1970X.Dispatch cycle times are wrong. X.Machines utilisation is wrong. The device stops uploading entirely and reports no fault.
A clamped out of range readingX.Machines shows a clean maximum for an unplugged sensor. X.EAM raises a work order against a component that is fine.
A radio frame accepted without checksumX.Tires invents sensors that do not exist and reports pressures for tyres that are not there.

1.1 The product surface, and what each area needs from the edge

ProductWhat it does for the customerWhat it needs from the edge, and what breaks without it
X.FleetWhere every machine is, what it is doing, and for how longPosition and machine state on a trustworthy clock. A drifting clock makes every duration wrong and the error is invisible on the dashboard.
X.DispatchAssignment and routing of haulage, loading and support equipmentPosition, payload, cycle state and low latency. A stale or duplicated assignment reaching a haul truck is an operational hazard, which is why duplicate suppression on the uplink matters.
X.MachinesUtilisation, availability, idling, payload, alarms and the notification centreFaithful decode with quality flags. A clamped value is indistinguishable from a real reading, and models trained on it learn a fiction.
X.TiresPressure, temperature, slow and fast leak models, tyre lifeRadio yield and frame integrity. A sensor identity corrupted by one bit becomes a phantom tyre, and a customer counts tyres they do not own.
X.EAMAsset register, failure history, work orders, reliability analysisComponent identity and a component addressed fault. Without identity there is nothing to hang a failure on. See section 11.
X.PartsSpares, onboarding of an asset fleet, parts against componentsThe same identity spine, plus serial numbers read from the machine rather than a clipboard.
X.InspectDigital inspections and the work order loop, delivered on the in cab tabletA reliable operator interface that survives a power cycle, and a store and forward path that does not lose a completed inspection underground. Tracked in its own projects, INSPECT and XI.
X.ConnectThe connectivity layer itself, sold as a capabilityIt is the edge. Mesh underground, LTE on surface, satellite on remote sites, and the routing logic that chooses.

A device's clock resets to 1970 on every power cycle. Which products are affected?

2. The platform

2.1 SymBot 6

ElementDetail
Application processorQualcomm QCM2290 on a Quectel SC206E module, kernel msm 5.4
Auxiliary controllerPIC18F47Q43 over UART at 230400 through a channel mux. Real and load bearing: Cat Data Link capture, hardware watchdog, SoC reset, power sequencing
Inertial sensingLSM6DS3 family, accelerometer and gyroscope, both configured at 416 Hz with FIFO enabled
Sub GHz radioSi446x on SPI, dual module, 433.92 MHz, every profile 2FSK
Vehicle busTwo CAN interfaces through an MCP2517FD or MCP2518FD controller on SPI. The Linux driver is mcp251xfd. Note the spelling, the older form finds nothing.
ImageYocto, layer meta-symbot, target image qti-robotics-med-image

Corrections that are already on record

Several widely repeated facts about this platform were wrong and have been verified against the source. The inertial unit is not a 10 Hz accelerometer only part, it is 416 Hz with gyro. The tyre radio is not 868 MHz and no profile uses on off keying. The application processor is not an NXP i.MX, that was SymBot 5. Compression, batching and store and forward are already built and enabled. Machine learning is absent at the edge and present in the platform.

If you read an older document asserting any of those, it predates the correction.

2.2 SymBot 5

The previous generation, on an i.MX8 application processor, still in significant field service. Several defects behave differently between generations, and at least one radio wedge appears to affect SymBot 6 and not SymBot 5, which is itself a diagnostic clue rather than a nuisance. Never assume a fix validated on one generation applies to the other, and never deploy a native library without confirming which generation it was built for. The pin map is the tell.

2.3 XTablet

An Android tablet in the cab running three applications that talk to each other over signature level inter process communication, so all three must be signed with the same key.

ApplicationRole
ManagerDevice owner. Provisioning, kiosk mode, remote shell, reverse tunnel, health reporting. It cannot update itself in the field, which is the single most consequential constraint in the tablet programme.
EdgeServiceThe data plane. Uplink transport, store and forward, sensor capture, cloud messaging.
GUIThe operator interface. Dispatch plans, acknowledgements, inspections.

Ports to know: the operator interface link runs on 5567, the legacy telemetry link from the SymBot on 5566, the device shell on 2222, and a reverse tunnel to a gateway host with a per device port derived from the device identifier.

Why does the Manager application constrain every tablet rollout plan?

3. The software estate

RepositoryWhat it isFeeds
pulse-daemonThe edge daemon. Bus decode, sensor capture, storage, compression, upload, diagnostics. Java, modular under opis/Every product
symlibsNative C libraries and their JNI bindings. SocketCAN, si446x radio, inertial sensing, Bluetooth scanningX.Tires, X.Machines, X.EAM
meta-symbotThe Yocto layer. What ships in the image, pinned to source revisionsThe whole fleet
xtabletThe three Android applicationsX.Dispatch, X.Inspect
SymBotSoftwareAcceptanceTestAcceptance harness and capture fixturesQuality of all of it
sight3-backendThe platform. Asset registry, fault service, sensor services, Athena queriesX.EAM, X.Machines

4. Machine data acquisition

This is the oldest and deepest domain in the company, and it splits three ways.

4.1 J1939 over CAN

The modern standard, covered in depth in the companion body of knowledge. The short version for this manual: there are two code paths, a legacy userspace implementation that the fleet runs today and a kernel socket implementation that is being migrated to, and nearly every open defect belongs to the newer one because it has not yet run at scale.

Key reading: Symbot 6 J1939 stack, current state and integration gaps (3695673345, hardware), and the best worked decode example the company has, Kress Hauler, Glencore Smelter, J1939 CAN decode (3854860290, TECH). Epics FW-4046 and FW-4104.

4.2 Cat Data Link

Caterpillar's legacy bus, captured through the auxiliary controller. It carries no SPN, so every signal is identified by a tag name and a parsing function. The reference is CDL Tag Reference, parsing functions and range validation (3579445277, hardware): roughly 350 tags, 122 of them range protected, 148 explicitly marked do not parse.

CDL matters more than its age suggests. It is a large share of two of the most important customer fleets, and it is the reason the platform keyword taxonomy is permanent. Signal numbering never replaces the keyword layer, it augments the J1939 subset only. Anyone describing the taxonomy as becoming a lookup table is overselling it.

Supporting tooling lives in a personal Confluence space and should be known to exist: an ECU identifier translation table (3750428674) and a recording visualizer application (3743318022).

4.3 Proprietary and OEM specific buses

Worked examples matter more than theory here. The model for a well documented negative result is FW-5412, Sany SKT115S reverse gear and body tilt over CAN (3845455874, TECH), which records what was attempted, what was found, and what was concluded to be unavailable. Write investigations that way. A documented negative saves the next engineer a week.

Open work of this class includes a Komatsu fault code lookup of roughly 1,500 codes and a Caterpillar proprietary set of around 3,000 entries. Both are blocked behind a code size limit in the legacy agent described in the companion manual.

5. Board support, image and over the air update

Everything the fleet runs arrives through a Yocto image and a package update. This domain decides whether a fix reaches a machine.

5.1 Provenance, and why it is not bureaucracy

Two hand built binaries had drifted from their source. A configuration recipe shipped a radio profile built without a required compile flag and declared the same installation paths as the main package, so install order decided what the radio actually loaded. And a vendored shared library concealed a recipe defect: the build never activated the SymBot 6 profile, so compiling from source produced a library driving the wrong generation's GPIO pins entirely.

The remediation pins the source revision, deletes the vendored library, asserts the correct pins at compile time, and makes one package the sole owner of the configuration files. FW-4986.

There is a second half that is not yet closed. The native library emits radio configuration blobs into a directory that version control ignores, and a human copies them into the daemon with a case rename. One of those files has been touched once in fifteen months. Forgetting the copy yields a green build and a stale field configuration, with no signal that anything is wrong.

5.2 Update hygiene, the recurring failures

Reference: Symupdater algorithm and flow diagram (3846471691, hardware) and MQTT based device management, codebase assessment (3814391811, TECH).

5.3 The supervisor and reliability control plane

There is an independent supervision layer whose job is to notice a device that has stopped behaving and recover it without a site visit. Read symbot-supervisor deployment and bench runbook (3702882306) and Reliability Control Plane MVP (3699900420). Both are TECH.

Related and worth knowing: a Java memory leak investigation process has been written up (3729850372) because it has been needed more than once, and a data reduction reference exists for the vehicle fleet where bandwidth is expensive (3889266691).

Two packages both declare the same configuration file path in the image. Why is that dangerous rather than merely untidy?

6. Time, and why the clock is a revenue problem

This domain looks like housekeeping and is not. It is currently one of the highest value problems in the estate.

6.1 The two halves of the defect

What it costs, measured

On one device the daemon logged eight times that the clock must be wrong and disabled storage. Upload volume for that day fell to roughly 2 percent of normal and the published signal set collapsed from about 123 distinct tags to three. The device reported no fault. Its acknowledgement queue was empty and the daemon believed it was publishing everything.

That is the shape to remember: a silent, total data loss that looks like a healthy device.

6.2 The 2038 family

A separate and related cluster where devices report dates in 2038, traced to satellite week rollover and stale assistance data. Two write ups carry it: RCA, 2038 clock flap on Caravan loaders, GPS week rollover and stale assistance data (3900145665) and Caravan 2038 and clock trust initiative handoff (3903160333). Both TECH.

Tickets across the family include FW-5554, FW-5511, FW-5549, FW-5542, FW-5409 and FW-5296.

One nuance already discovered and worth carrying: there are at least two distinct failure shapes. A device with no cellular time source drifting forward, and a device holding a stale past date across a cold boot. A guard written for the first case does not catch the second, and the second is the one that disabled storage.

6.3 Where the tension is

Unlocking the hardware clock has a real downside that is stated in the analysis: it also lets a bad network supplied time value persist rather than be forgotten at power off. The counter is also shared with modem and trusted execution firmware. So the safe sequence is to fix synchronisation and add software persistence first, and treat the device tree change as bench gated.

The hardware clock refuses every write because of a device tree property. Why is adding that property not obviously the right first move?

7. Radio and tyre pressure monitoring

Four sensor families reach the SymBot over a sub GHz radio: SST, TireCheck, DG and LDL. This domain is dense, it has produced the most instructive engineering in the company, and it feeds X.Tires directly.

A short primer, because the vocabulary here is unforgiving

The band is 433.92 MHz, and this needs a regional note. 433.92 MHz is a licence free industrial band in ITU Region 1, which covers Europe, Africa, the Middle East and Russia. It is not a general purpose licence free band in the United States or Canada, where tyre monitoring conventionally sits at 315 MHz and 433 MHz operation falls under restrictive duty cycle rules. SymX has North American deployments, so a radio change is a regulatory question as well as an engineering one. Confirm the regional position before any change to transmit behaviour or duty cycle.

7.1 How configuration actually reaches the radio chip

There are two paths and only one is authoritative. A compile time fallback is baked into the native library from generated headers, and on the SymBot 6 build that fallback always resolves to a single sensor profile regardless of what the device actually ships with. The runtime path loads a binary configuration from a file at boot and caches it per module.

The consequence is specific and has been written down: falling back to the compile time configuration during a recovery would silently reprogram a chip onto the wrong sensor profile until the next daemon restart. Recovery paths must reuse the cached runtime configuration.

Reference: FW-5462, which also records a resolved question about crystal frequency, a still open mismatch between the declared part number in the generated headers and the part actually fitted, and an effective bus clock far below what the hardware allows.

7.2 The checksum work, and what it bought

One sensor family's two byte trailer was believed for a long time to be a decode artefact with no usable checksum, and a ticket was abandoned on that basis. It is a real CRC-16/CMS: polynomial 0x8005, initial value 0xFFFF, no input or output reflection, final xor 0x0000, computed over the frame body and stored big endian in the trailer. The reversal is documented in date order across three pages, which is exactly why the date order rule exists: bench findings that ruled CRC out (3823927297, superseded), the reversal (3845193748), then corruption measured and CRC cracked (3847782403).

15.7% to 0.039%
Phantom sensor identities on a marginal board, roughly 400 times better
20 bytes
The on wire frame length the validation requires. Shorter capture configurations truncate the trailer and there is nothing to check
8 of 8
Frames recovered on a customer truck once slip recovery was enabled

Commercially: a phantom sensor is a tyre the customer does not own, appearing in X.Tires with a pressure and a temperature. There is no way to explain that to a tyre engineer other than admitting the data was never validated.

7.3 The wedge, and why a green counter lies

A three tier self heal ladder exists for a radio module that stops delivering. A third wedge mode defeats it: synchronisation counts climb steadily while the receive counter stays frozen, so an aggregate liveness check never fires and the first tier re-arms nearly two hundred times to no effect.

The finding that outlives its ticket

The middle tier recovers by sleeping and reinitialising, which skips the reset and power up sequence, and with it the image rejection, oscillator and loop calibrations that only happen at power up. The result is that strong neighbouring machines decode while the vehicle's own marginal tyres do not, the receive counter reads healthy, and the watchdog stands down.

Confirmed on a five tyre set: a daemon restart recovered two of five, a full power cycle recovered all five, with tyres reappearing between ten and thirty two minutes later. A customer can be told their tyre monitoring is working while the tyres on that machine are invisible.

Two hard won operational rules from the same investigation. Verify any native radio library with strings before deploying it, because a library cross built without the generation flag drives an invalid pin map. And do not use a machine with a failing battery as a validation target.

7.4 A protocol bring up done well

The most recent sensor family was brought up to roughly 100 percent capture over an eighteen hour run. The root cause of the earlier failure was sync word bit order: the radio holds each sync byte reversed relative to the air, so receiving one pattern requires writing a different one. Earlier attempts wrote the on air pattern verbatim and the packet handler never locked.

Two decoder fixes in the same work are the template for any future protocol. Unknown line code cells were being forced to zero, discarding 38 percent of all frames, and are now resolved by testing candidates against the frame checksum. Noise satisfying an eight bit checksum by chance fabricated a sensor roughly once in 610 frames, and is now gated on the line code, because a genuine burst carries at most one illegal cell while a noise lock carries about fifty.

Be precise about which mechanism is doing the work. An eight bit checksum has roughly a one in 256 false accept rate per candidate tested, so resolving several unknown cells by brute force against it is weak on its own, and the false accept probability climbs with the number of candidates. The line code gate is the real defence. Observing zero failures over a nine hour run is consistent with either outcome at that rate, so report the frame count rather than the duration when making this claim.

Reference: LDL WUS TPMS, Si4463 receiver bring up and validation (3909648387, hardware) and FW-5024. Merge order for that work is stated and mandatory: the native library first, then the daemon, because the model has nothing to call without its native entry point.

7.5 Further reading in this domain

Radio and TPMS pages System analysis of SST TPMS across radio, SPI, symlibs and pulse (3852435458) SST driver consolidation, recovery, RSSI and SPI pool (3864592387) SST Manchester decode A/B results (3809968130) Comparison of EZPro RF pico board and Symbot 6 init (3840311297) TPMS devices.log analysis tool (3891986436) TPMS leak model, on device integration and validation (3772514307)

A machine's receive counter is healthy and the watchdog is quiet, and the tyres on that machine are still missing. What is the most likely explanation?

8. Connectivity: LTE, mesh and the tablet uplink

X.Connect is a product in its own right, and it is also the thing that decides whether any other product has data.

8.1 Cellular

The modem has its own long running reliability story: interface inconsistency, stuck states requiring a watchdog, reboot loops caused by that watchdog, and provisioning specifics per carrier. Start with Current issues with the LTE interface and roadmap to mitigate them (3811835906, hardware) and the worked root cause at E401304 LTE data call failure with a floLIVE SIM (3788210177, TECH).

8.2 Wi-Fi mesh, X.Mesh

Underground there is no cellular and no satellite positioning, so a mesh is the only backhaul and it is a first class product concern. Roadmap: X.Mesh consolidated roadmap, from V1 pilot to shippable managed service (3737976840, hardware). Recent hardware evaluation work includes a Wallystech DR5018S evaluation (3887759362) and practical procedure notes such as Wi-Fi configuration using wpa_cli with example commands (3896705027).

Deeper mesh engineering on record includes asymmetry aware routing patches, persistent logging on the router platform, serial recovery procedures, and a trip count against signal strength analysis from an underground grizzly. Note that part of the mesh roadmap was closed in August, so check dates before treating a mesh page as live.

8.3 Hotspot and provisioning

A device hotspot is used for provisioning and field work, and there is an open thread about making it persistent across reboot and shipping it as a deployable service with internet sharing on by default. FW-5491, FW-5509, FW-5510.

8.4 Data muling

Where there is no backhaul at all, data is carried physically between devices. There is a design and a two device bench validation on record. See Data muling project (2860384431, TECH) and tickets FW-5301 through FW-5305.

9. The XTablet programme

Today every byte between the tablet and the cloud travels through the SymBot, which holds the cellular connection. When that link drops the tablet goes dark and recovery needs a physical reboot on a machine that may be underground. The programme gives the tablet its own uplink, and in doing so turns the SymBot into a bus and radio peripheral.

Bring it upward

This is not only an engineering change. Once the tablet holds the connection, the position source and a direct cloud session, the bill of materials, the pricing, the install labour and what the sales team sells all change. It is a product line pivot and it deserves to be named as one.

9.1 Architecture and release history

Read in this order: XTablet architecture proposal, shared Manager and EdgeService, config driven per product (3855417345), then XTablet Solution Release 2.0.0 plan (3864854531), then XTablet fleet platform handoff, components and dataflow (3871375362), then XTablet provisioning runbook, certificates and gateway keys (3875405826), then Version 2 field deployment guide for technicians (3896868870).

Three of those pages live in a personal Confluence space, so browsing the team spaces will not surface them. That is a real onboarding hazard and those pages belong in hardware or TECH.

9.2 The uplink lineage question

Two branches ship incompatible cloud uplinks.

The decision taken is to keep the mainline branch as trunk and port the field integration client onto it, then retire the field integration branch. The enabler is that the field client already implements every method of the transport interface, so it is renames instead of a rewrite.

Sequence and reference: FW-5531, FW-5532, FW-5533, FW-5534. An open external dependency sits on top of it: the cloud account referenced in code differs from the one used on the bench, and that has to be answered before anything ships.

9.3 The reverse role design

The architectural inversion, where the tablet holds an access point and the SymBot pushes to it. Design: Tablet-FMS reverse role SymBot link (3893231618, TECH).

The blocker is a permission, not the hardware. Concurrency of station and access point is advertised and proven on the device. The only hotspot entry point an ordinary or device owner application can call fails on the vendor build while a station is connected, and the concurrency aware path requires a privileged permission no device owner application holds. Underground there is no cellular and no satellite positioning, so this is mandatory there. FW-5506.

9.4 One latent defect worth knowing in detail

The store and forward drain replays an entire pending backlog in a tight loop with no backpressure. On the bench that produced an in flight publish count above 32,000, a load average around 14, memory at 92 percent, a flapping connection, and a backlog that barely moved across a whole session. It is present in the shipped field build, and it defeats the stated acceptance bar of zero loss ordered backfill after an outage. FW-5535.

Related and instructive: an identity gotcha where the platform identifier is derived per signing key, so a policy scoped to the value read from a shell differs from the value the application actually presents, and the connection is refused with a bare transport error and no useful diagnostic.

9.5 Other tablet reading

Tablet pages FMS Tablet MVP, product requirements (3793223683) Tablet-FMS master architecture note and re-slice plan (3812491269) Handover, EdgeService auto reconnect (3845881858) XTablet gateway tunnel, add a key and debug (3902996486) Customer code topic partition, cloud team action items (3898343428)

The tablet cannot hold an access point for the SymBot while staying on the mine network. What kind of problem is this?

10. Bluetooth zones and reverse tracking

Underground, satellite positioning does not exist. Position comes from proximity to known beacons, resolved into zones. This feeds X.Fleet and X.Dispatch directly, because an assignment needs to know where a machine is.

Reading: Reverse tracking, technical implementation and zone detection algorithm (3579445250), BLE zone resolution, signal strength winner margin findings (3841687566), SymBot 5 BLE reverse tracking field health check (3845423106) and the programme handover (3877470210). All hardware.

Active threads include zone configuration and beacon to zone mapping, and consumption of zone identifiers on the tablet side. FW-5548, TAB-382.

11. The asset register and X.EAM

This is where the edge estate turns into the most defensible thing SymX sells. The companion body of knowledge carries the full primer. What follows is the part an embedded engineer has to hold.

11.1 The thesis, briefly

A mine builds its equipment register by hand and it is wrong within a month. Maximo assumes the register exists. Hexagon EAM sells a project to build one. RPMGlobal AMT models cost on top of one. None of them generates it. SymX can, from machine data, and can also detect when a component is physically replaced.

The detection mechanism is the part that depends on firmware. A machine broadcasts component identity on the bus. When a serial number changes, the old component row is closed and a new one opened, producing a dated replacement event. A swap must never update a row in place, because that erases the fact of replacement, which is the most valuable record in the register.

11.2 What the platform needs from the edge, and the current gap

RequirementWhat it needs from firmwareState today
Manufacturer, model, serial and software per maintainable itemComponent identification and software identification messages requested after address claim, published on changeGap Identity reaches 7 devices of 291, 2.4 percent. The register cannot be sold at that number.
A failure record addressed to a componentSignal and failure mode numbers carried to cloud as integers rather than buried in a display stringIn flight
Data qualityQuality flags instead of clamping, raw value preservedIn flight Every anomaly model so far has trained partly on manufactured maxima.
CompletenessA per message type drop counter published hourlyNo work Today the coverage claim is a screenshot. It should be a metric with a histogram, which turns the next licensing decision into arithmetic.
TimelineOperating hours carried with faults. It is the denominator of every reliability rateIn flight A non monotonic hour meter is an event, never a value to smooth.
Component replacementSerial change raises an event, old row closed, new row openedIn flight
Safety critical failuresLamp state decoded on device, faults sent on changeGap Severity comes from lamps and never from the failure mode number.

The sentence that reframes these tickets

Read as firmware, these are small additive changes. Read as product, they are the difference between a telemetry feed and an asset management platform. The identity work in particular is commercial work wearing a firmware ticket number.

11.3 The vocabulary, and the limit to claim

Failure mode is what the item failed to do. Failure mechanism is the physical process. Failure cause is why it happened. Maximo, SAP PM and Hexagon EAM all want all three. None of them wants a signal number. The bus can seed mode and detection method. Mechanism and cause require a work order close out by a person. Say that plainly. Implying otherwise gets the register taken apart by a reliability engineer.

And the language rule: structured to ISO 14224, never certified, because no certification scheme exists. Mobile mining equipment is also not an ISO 14224 equipment class, so SymX applies the method and not the equipment coverage.

A component's serial number changes on the bus. Why must the register open a new row instead of updating the existing one?

12. Field operations and the fleet as it really is

A large part of the estate's behaviour is only visible in the field, and the operational record is a genuine engineering input.

The counterpart is the bench. Symbot Test Bench (2256928769, hardware) documents the J1939 simulator, the OBD simulator and the CDL simulator. Symbot 6 production run interface validation record (3817504774) is the existing validation artefact and should be extended rather than duplicated.

Bench capacity is a recurring constraint. A regression gate was recently waived because every laboratory board except one was offline. Knowing which boards are healthy is a prerequisite for trusting any result.

13. The knowledge ledger

This is a map of who holds the depth in each area, so you know whose written work to read first and where the gaps are. All of it is being consolidated into this manual and its companion. Read the named engineer's pull request descriptions as well as their Confluence pages, because in several cases the pull request carries the better reasoning.

DomainWhere the depth isWhat to read first
J1939 and SocketCAN, tablet architecture, clock trust, data muling, device connectivity root causesAjay (Ajaypal Sandhu, AjaySym607 on GitHub). The largest single body of written analysis in the estate: the J1939 stack, the tablet architecture and provisioning runbooks, the clock trust initiative, the data muling design, and most recent device root cause investigationsConfluence 3695673345, 3812491269, 3875405826, 3903160333. Pull requests on pulse-daemon and xtablet carry the reasoning in their descriptions, and they are worth reading as documents.
Yocto, image, board bring up, over the air update, real time clockHai Wang. Image release ownership, device tree and kernel level work, build provenance, staged rollout and shadow driven configuration, and the low power and battery behaviourFW-5554, FW-4986, Confluence 3846471691
XTablet release, Manager internals, reverse tunnel, store and forward orderingKai Wang. The 2.0.0 release end to end, transport internals, reverse tunnel and port allocation, out of order tolerant ingestion, and archive segment namingConfluence 3855417345, 3864854531, 3896868870. Project TAB.
Radio internals, sensor protocols, signal strength, radio configuration, CDL schema toolingTom Oke. The si446x domain, interrupt behaviour, configuration discrepancies, signal strength consistency across all four sensor families, and the CDL translation tooling and recording visualizerFW-5463, FW-5462, Confluence 3852435458, 3847782403
Sensor field support, hotspot, bench hardware, battery and powerGagandeep Singh. Sensor tuning and field debugging, hotspot provisioning and internet sharing, hardware variants, battery testing and damaged device recovery triageFW-5024, FW-5509
Bluetooth zones, mesh routing, router platform, customer mesh supportAlona Bovshever. Zone configuration and beacon to zone mapping, asymmetry aware mesh routing, router persistent logging and serial recovery, and the Komatsu fault code lookup work. Her J1939 ramp up ladder is also a good reading order for that domainConfluence 3579445250, 3841687566, 3877470210, 3737976840
Mesh hardware evaluationZoe Lin. Recent evaluation of router hardware for the mesh productConfluence 3887759362
Fleet and field operationsLalit. Per customer device status, update waves, site specific issues, and hotspot persistence in the fieldProject FS and the per customer tickets in FW
Tablet and dispatch application layerRahul Gupta. Operator login flows, tablet and SymBot integration testing, the management message protocol, and zone identifier consumption on the tablet
Product and analyticsMayank Mahajan. Idling factors, proximity based queuing, mine map direction, notifications, and the cloud side messaging schema the tablet depends on
Platform, asset registry, alarmsSaikat Prabhakar. The alarm management console programme, the asset register and fault service on the backend, and hotspot productisationsight3-backend, and the alarm knowledge base in the product folder

Known gaps in the written record

14. Working practices

14.1 The four test levels

LevelWhat it isWhen it is enough
1. Unit, off targetTests on a laptop, including the native libraries now that they build for a desktop architectureNever on its own for a decode or radio change
2. Capture replayThe real stack against a recorded bus or a recorded radio capture, with no hardwareThis is where most defects in this manual should have been caught
3. Hardware in loopA bench board with a simulator or a replayed captureMinimum bar before anything is reported as working
4. One real machineA field machine, full shiftMinimum bar before anything reaches a fleet

14.2 Evidence discipline

14.3 Safety rules on customer equipment

Which test level would have caught the largest share of the defects described in this manual?

14.4 The bench exercise

Complete this before section 15. It proves access, proves the toolchain, and establishes the reporting standard expected of everything afterwards.

  1. Confirm access to the six repositories, the five Jira projects and both Confluence spaces. Note anything you cannot reach and request it the same day.
  2. Identify which laboratory boards are currently healthy and reachable, and write the list down. Bench capacity has already caused one regression gate to be waived, so this is real work and not a formality.
  3. Bring up a virtual CAN interface, replay a capture from the acceptance fixtures, and report distinct tag count, buffer overflow count and diagnostic message count against the baselines in the companion manual.
  4. On one bench board, capture a radio session and report frames received, frames passing the checksum gate, and distinct sensor identities. State the frame count, not the duration.
  5. Write one page in the format the estate uses: what was run, on which named device, what was measured, and what you conclude. Include one thing you could not determine.

What good looks like: every number is attributed to a named device, and the page states a limit of what it proves. That last part is the house standard and it is what makes the written record here trustworthy.

A colleague reports that a radio fix improved capture from 60 percent to 98 percent. What is the first thing you ask?

15. Reference index

Repositories pulse-daemon symlibs meta-symbot xtablet SymBotSoftwareAcceptanceTest sight3-backend
Jira projects FW, Firmware TAB, x.tab HD, Hardware Design FS, Field Support OO4, application TIRE, X.Tire INSPECT, X.inspect PSS, Production Software Support
Confluence spaces hardware TECH QA and product provisioning Support SymCloud
Orientation pages, read these in the first week IOT team restructure (3865903107) Symbot Test Bench (2256928769) Symbot 6 production run, interface validation record (3817504774) Symbot network and security FAQ for IT and OT reviews (3815931905) Cybersecurity analysis, pulse-daemon (3062169603) SymBot6 LED patterns (3788963843) Java memory leak investigation process (3729850372)

16. The ten things to carry out of this manual

  1. Every layer here ends in a product. If you cannot say which product a change serves, you do not yet understand the change.
  2. The clock is a revenue problem. A silent clock failure produced a 98 percent data loss on a device that reported itself healthy.
  3. Identity is what makes telemetry into asset management. 2.4 percent identification is the number standing between SymX and the register product.
  4. Never substitute a limit for a reading. Flag it, keep the raw value, and let the platform decide.
  5. A green counter can lie. Verify the thing you care about, never a proxy for it.
  6. Install order has decided what a device runs. Pin ownership and pin revisions.
  7. Parse defensively at every boundary you do not own.
  8. Data files are code. They need lints and tests exactly as much as decoders do.
  9. Read Confluence in date order, and check the repository before believing a ticket status.
  10. Write the negative result, and retract in public. That is the standard here, and it is why this manual could be written at all.

Review and certification

This manual was independently reviewed before release on two axes, instructional design and embedded systems technical accuracy. Both reviews returned pass with corrections, and every required correction from both reviewers has been applied in this revision.

Instructional review. Reviewed in full against a professional technical onboarding standard for learning architecture, cognitive load, retrieval practice, transfer, reference value and HTML accessibility. Verdict pass with corrections. Required corrections applied: terms defined before first use and a glossary added, content that existed only inside a diagram restated in prose and tables, a visible summary added above the collapsed case studies, front matter added covering audience, prerequisites, time, access to request and the completion bar, a mandatory practical exercise added, superseded reference pages marked inline, contents lists reconciled with the section numbering, the knowledge ledger given the names it exists to carry, quiz placement and two weak distractors corrected, and the placeholder certification block replaced with this one.

Embedded systems review. Reviewed by a principal embedded systems engineer against CAN, SAE J1939, SocketCAN, sub GHz radio, Yocto and Android device owner domain knowledge. Verdict pass with corrections. Corrections applied: error counter thresholds and the fact that only the transmit counter causes bus off, automatic bus off recovery, the scope of the hardware CRC claim, extended frame control bit count, the eighteen bit PGN assembly and the requirement to zero the PDU specific byte for addressed messages, the two missing failure mode identifiers, diagnostic message indexing from the fault record and the existence of earlier conversion methods, the width dependence of the reserved sentinel ranges, correct attribution of the 512 entry socket filter limit to raw sockets, the origin of the 256 prefetch value, the distinction between step and slew directives in time synchronisation, the regional regulatory position of the 433.92 MHz band, the strength of an eight bit checksum used for erasure resolution, the full checksum parameters, the correct driver name, and the normative status of the equipment class annex.

Verified arithmetic. The signal number 190 read big endian yields 48,640, confirmed. 160,633 seconds is 44.62 hours, confirmed. The code size headroom of 2,677 bytes divided across roughly 59 further registrations implies an average of about 45 bytes each, which is credible for the current method body and is an average rather than a bound.

Two items carried forward, flagged by the technical reviewer

  • The asset management standard clause numbers and the transition date are not independently verified here. They are the first thing a customer certification manager will check. Confirm against the standard before quoting them externally.
  • The manufacturer code and function asserted in the network name are unverified and structurally suspect, because a function value of 129 is defined per industry group and cannot sit in industry group 0. Resolve before any customer bus deployment.
Instructional review
Senior technical onboarding reviewer
Pass with corrections, corrections applied
Embedded systems review
Principal embedded systems engineer
Pass with corrections, corrections applied
Owner
Ash Agarwal, SymX
September 2026