Files
orin-nano-env-setup/docs/BOM.md
T
mikkeli 0b3783dac0 BOM: add Waveshare UPS Power Module (C)
15-19 V in, 3S 21700 pass-through UPS with an INA219 that the car unit
sees on I2C bus 7 at 0x41 (read-only check: 12.34 V, idle). Bench test
held the Orin >=20 s across a supply swap. Notes the 20 V PD caveat and
the intended ignition-off shutdown via battery current direction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:04:40 +09:00

100 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
type: reference
---
# Bill of Materials
## PEAK-System PCAN-USB
| Field | Value |
|-------|-------|
| **Manufacturer** | PEAK-System Technik GmbH |
| **Model** | PCAN-USB |
| **USB ID** | `0c72:000c` |
| **Purpose** | USB-to-CAN adapter for reading car CAN bus traffic |
| **Interface** | SocketCAN netdev |
| **Bitrate** | 500 kbps, measured on the Z27AG OBD port (listen-only by default; see [CAN bitrate plan](impl/plans/CAN-BITRATE.md)) |
| **Driver** | PEAK proprietary driver 9.2.0 (netdev build) — out-of-tree module, must be rebuilt after kernel updates |
### Notes
- The mainline kernel driver `peak_usb` is not compiled into the NVIDIA Tegra kernel (JetPack r36.4), so PEAK's proprietary driver is required.
- Must be built with `NET=NETDEV_SUPPORT` for standard SocketCAN tools (`candump`, `ip link`, etc.).
- The module lives at `/lib/modules/$(uname -r)/misc/pcan.ko` and is loaded via `modprobe pcan`.
- Jetson Orin Nano has a built-in CAN controller (exposed by GPIO pins). Kernel `canN` order is not stable, so both are pinned by udev: onboard → `can_onboard`, PCAN-USB → `can_pcan` ([device naming](impl/reports/DEVICE-NAMING.md)).
## Waveshare SIM7600G-H-M.2
[hat](https://www.waveshare.com/wiki/SIM7600G-H-M2_4G_HAT) [module](https://www.waveshare.com/wiki/SIM7600G-H-M.2)
| Field | Value |
|-------|-------|
| **Manufacturer** | Waveshare (SIMCom SIM7600G-H-M.2 module) |
| **Form factor** | M.2 B KEY |
| **Purpose** | LTE Cat 4 cellular + multi-constellation GNSS (GPS, Beidou, GLONASS, GALILEO, QZSS) |
| **Interface** | USB (ttyUSB* for AT commands/NMEA, QMI `cdc-wdm0` + `wwan0` for data) |
| **Power** | 3V – 4.2V (board rail) |
| **Antennas** | 3× IPEX (LTE main + LTE diversity + GNSS) |
| **Max data rate** | 150 Mbps DL / 50 Mbps UL (LTE Cat 4) |
### Required software
| Package | Purpose |
|---------|---------|
| `gpsd` | Decode NMEA from the GNSS ttyUSB port |
| `ModemManager` + `NetworkManager` | Manage the modem and the LTE data connection (QMI) |
| `qmi_wwan` + `cdc-wdm` kernel modules | Not in the Tegra kernel; built out of tree in `~/infra/qmi_wwan/` |
| `minicom` (or `picocom`) | AT command terminal for module configuration |
### Notes
- The module presents multiple USB serial ports (`/dev/ttyUSB0`–`/dev/ttyUSB4`) — ttyUSB2/3 for AT commands, ttyUSB1 for NMEA GPS data (symlinked as `/dev/sim7600-gps`).
- Default USB composition (PID 9001) is used with QMI; no PID switch needed. PPP dial-up does not work with the povo SIM (network detaches).
- Setup details: [SIM7600 setup report](impl/reports/SIM7600-SETUP.md).
- M.2 B KEY is **not** mechanically compatible with Mini-PCIe.
- Supply voltage should be ~4.0 V for reliable operation.
- DO NOT hot-plug while powered.
## Waveshare UPS Power Module (C)
[wiki](https://www.waveshare.com/wiki/UPS_Power_Module_(C))
| Field | Value |
|-------|-------|
| **Purpose** | Keep the Orin running through cranking and short power losses, and give time for a clean shutdown at ignition off |
| **Input** | 15–19 V DC (Waveshare recommends a 19 V / 2.37 A adapter). ⚠ A PD trigger at the standard 20 V level is above the rated maximum |
| **Output** | Input voltage when powered (pass-through); battery voltage (9–12.6 V) when not |
| **Battery** | 3 × 21700 Li-ion in series (not included); charging stops when full and resumes below 12 V |
| **Monitoring** | INA219 on I²C. On the car unit it is **bus 7 (40-pin header), address `0x41`** |
| **Holdover (bench, 2026-10-09)** | ≥ 20 s across a supply swap, enough to ride through cranking |
### Notes
- First read-only check (2026-10-09, on input power, charged): bus 12.34 V, shunt ≈ 0 mV (idle). Chip at power-on defaults (config `0x399f`,
calibration unprogrammed), so read current from the **shunt-voltage register** (0x01, 10 µV/LSB) rather than the current register.
- Ignition-off shutdown (not built yet): on input loss the battery current turns clearly negative (discharging). A small service watches the
INA219, waits out a grace period longer than a crank (30–60 s), then runs `systemctl poweroff`, with low battery voltage as a hard backstop.
The shunt value is unconfirmed; check the schematic before converting shunt mV to amps.
- No GPIO or shutdown signal on the module; the BOOT button may be needed to wake a battery that stopped outputting (FAQ).
## RTC backup battery
**Status: optional, low priority.** Battery choice settled (CR2032); footprint/R560 still to verify against NVIDIA's schematic.
| Field | Value |
|-------|-------|
| **Purpose** | Keep the RTC (`rtc0`, `nvvrs-pseq-rtc`) running while the board is unpowered, so the clock is correct at boot without network or GPS |
| **Carrier board** | P3768 (Orin Nano Developer Kit): pads present, **connector not populated** (needs soldering) |
| **Connector (per NVIDIA docs, as quoted on the forum)** | Wieson AC2651-0011-003-HH, 2-pin, 1.25 mm pitch. A community-used substitute is Molex 53398-0271 header + 51021-0200 housing |
| **Battery** | **CR2032** (primary 3 V lithium) in a holder with leads. **Not ML2032 or other rechargeables:** the module datasheet says the backup pin (PMIC_BBAT) does not support charging, so a rechargeable just drains, and it has ~⅓ of the capacity |
| **Expected life** | RTC draws 12–50 µA while unpowered (~15 µA measured on the forum) → CR2032 (~220 mAh) lasts ~1.5–2 years typical, ~6 months worst case. Drains only while the board has no power |
| **Extra parts** | Forum reports also populating R560 (0.56 Ω, e.g. Panasonic ERJ2BQFR56X); confirm in the P3768 schematic |
### Notes
- Without it the clock boots at a stale date (seen 2026-10-08: June 4) until NTP syncs. See the [time sync report](impl/reports/TIME-SYNC.md).
- Forum sources: [RTC battery on Orin Nano DevKit](https://forums.developer.nvidia.com/t/rtc-battery-on-jetson-orin-nano-developer-kit/296732), [How to add RTC battery](https://forums.developer.nvidia.com/t/how-to-add-rtc-battery-in-jetson-orin-nano/255792).
- A reported side effect: the battery lead and socket make the case cover sit unevenly.
- Polarity: one forum post says the positive pad is marked with a white triangle. Confirm with a meter before connecting.
- Test after fitting: power off fully, wait a few minutes, boot with no network, and check `cat /sys/class/rtc/rtc0/date` (should be today, not a reset date).
- Low priority: online almost always means NTP within a minute; the gap only matters for offline drives (see the [time sync report](impl/reports/TIME-SYNC.md)).