docs/CAMERAS.md

CSI vs GMSL (and the rest of the camera pipes)

Thor never “speaks GMSL.” It speaks MIPI CSI-2. GMSL is a long-haul truck that dumps CSI at the carrier.

sensor ──CSI-2──► [optional SerDes] ──cable──► [optional DeSer] ──CSI-2──► Thor NVCSI → ISP → NVENC

CSI-2 (MIPI)

What: Phone/embedded camera bus. 2 or 4 data lanes + clock on a flex (FFC) or tiny coax. D-PHY on Thor: 2.5 Gbit/s per pair, 40 Gbps aggregate (DS-11945). C-PHY exists; qualified slower than the brochure.

Cable: ~10–30 cm. Past that, the eye closes. Not a set cable.

Control: I2C on the same flex (sensor registers, sometimes a VCM for autofocus).

Power: Separate 1.8/2.8/3.3 V on the flex, or the carrier’s camera header.

On Thor: Up to 6 cameras / 16 lanes, 32 virtual channels. Body cam bolted to the box is this.

Cost: Module $30–$400. No extra chips.

Failure mode: Flex rips, connectors walk out, EMI, length.

Analog Devices (Maxim) SerDes. GMSL2 ≈ 3 or 6 Gbit/s per coax. GMSL3 ≈ 12 Gbit/s. Automotive cameras, FAKRA connectors.

What it really is: CSI on the camera board → serializer (e.g. MAX9295) → 50 Ω coax → deserializer on the carrier (e.g. MAX9296) → CSI into Thor. I2C is tunneled. Power over Coax (PoC) so one cable is video + control + 12 V.

Cable: ~8–15 m (3 Gbps), sometimes 15–20 m. Locking FAKRA. Vibration-proof vs CSI flex.

On Thor: Needs a deserializer card (CTI JCB022, Leopard adapter, FORECR GMSL add-on). Jetson still sees CSI. Hardware frame-sync is common (all sats share a trigger).

Cost: Camera $150–$800 + deserializer board $400–$1,500 + FAKRA cables. BOM for 2 sats is real money vs CSI.

Failure mode: SerDes lock, I2C address clashes, PoC current, driver not in the BSP. Bring-up is the hard part, not the pixels.

GMSL3 is the newer, faster cousin. Same idea, fewer cameras in catalog, CTI JCB009.

How this maps to our kit

RolePipeWhy
Body on the Thor boxCSI-220 cm of flex. Lowest latency into ISP/NVENC/cuVSLAM.
Sats across a setGMSL2 or PoE H.265 or BMD HDMI/SDINeed 5–15 m. CSI cannot.
Cine A-cam (PYXIS)HDMI / 12G-SDINot CSI. See SHOPPING.md.

CSI vs GMSL is not a picture-quality choice. Same Sony IMX can ship as CSI or GMSL. You’re picking cable plant.

Cousins (so the table is complete)

PipeDistanceInto Thor asNotes
CSI-210–30 cmnativeBody
GMSL2/38–15 m coaxDeSer → CSISats, PoC, FAKRA
FPD-Link III10–15 mDeSer → CSITI’s GMSL rival. Fewer Jetson boards
HSB / CoEEthernetHoloscan Sensor BridgeNVIDIA’s Ethernet-sensor story. AGX kit QSFP
HDMImetersbridge chip → CSIPocket cameras. 4K30 maybe
3G-SDIlongCTI JCB003 → CSI1080p only
12G-SDIlongno cheap Jetson cardPYXIS 4K out; Thor can’t ingest 12G off-the-shelf
USB UVC3–5 mUSBEasy, latency, not the take
GigE / PoE IP100 mEthernet, already compressedOur original sat idea; no RAW into ISP
Cooke /imilliamps serialUART sidecarOrthogonal. Almost no CSI/GMSL module has it

Lens metadata gap

Industrial CSI/GMSL cameras are M12 or C-mount, sometimes a tiny VCM. They do not speak Cooke /i. C-mount can take cinema glass mechanically; /i still needs the four PL pins or a barrel reader.

So:

  • CSI/GMSL body = great pixels into NVENC, fake /i unless you add a reader.
  • PYXIS PL = real /i, not CSI.
  • Hybrid we already steered: cine body (BMD or PL CSI-box you build)
    • GMSL or PoE sats that may never be /i-class.

Widened camera list (not Blackmagic)

Prices qty-1, 2026. Thor drivers are not guaranteed — Orin BSP is the usual starting point.

CSI-2 (body / close-in)

CameraSensorRes / shutterStreetNotes
NVIDIA / Leopard P3762 (IMX219-class kit cam)small rolling1080p-ishkit accessoryDev-kit ribbon. Not 4K cine.
Arducam xISP IMX678Sony Starvis2 1/1.8”4K15 rolling, UYVY (onboard ISP)$160Cheap 4K CSI for Orin NX. Confirm Thor DT. M12, no /i.
Vision Components VC MIPI IMX585Starvis 1/1.2” 4Krolling, ~72 fps class~€245 1ku flyer; proto higherProper module, source drivers. Optional GMSL2 adapter (~10 m).
FRAMOS FSM:GO IMX9003.2 MP globalPixelMate CSI$129 MouserThor “preparing” (FRAMOS Aug 2026). Not 4K. Global shutter tracking.
e-con e-CAM81_CUONX4K HDR CSIOrin NX/Nano~$99–200 kitOrin, not Thor-listed.
Allied Vision Alvium CSI-2many Sony/onsemiC-mount$400–1,500Interchangeable glass. JetPack 6.2 drivers (Orin). Closest to “cine CSI.”

GMSL2 (sats)

CameraSensorResStreetNotes
FRAMOS FSM:GO IMX900 GMSL33 MP globalnot 4K$207 MouserSame module as CSI, FAKRA.
e-con NileCAM81IMX678 4KGMSL2, AGX Orin/Xavier~$99 module (+ kit)4K GMSL sat candidate. Thor BSP unknown.
Leopard IMX390 GMSL22.1 MP automotive1080p HDR~$540–725 kitADAS, M12, 3 m FAKRA. Not 4K.
Leopard AR0234 HAWK/OWL2.3 MP globalstereo kits$149–3k kitsTracking/SLAM, not picture.
Allied Vision Alvium GM2C-mount, many sensors1080p–4K depending$500–2,000C-mount + GMSL2 + FAKRA. Best “sat with real glass.” CTI Rogue documented (WDL).
TechNexion VLS-GM2-*AR0144 etc.1 MP global, C-mount$163Cheap GMSL C-mount.
D3 ISX031 sealed GMSL23 MP$624Automotive sealed.

Deserializer boards (required for GMSL)

BoardPriceHost
CTI JCB022 GMSL2 (8 ch, PoC)quoteGauntlet / Rogue-T5
Leopard LI-GMSL2-DESER-HOLOSCAN$388Thor HSB / Holoscan, 1 cam
Leopard 8-ch AGX adapters$699 carriersOrin-era; Thor TBD
D3 DesignCore 16-ch$799Orin kit, not Thor
FORECR GMSL2 add-onquoteTHRMAX

How I’d shop if we widen past Blackmagic

Body (on the box): CSI IMX585 or Alvium C-mount, 20 cm flex, Thor NVENC. Add a PL /i reader later if you care. This is the camera Thor was designed for.

Sats: Alvium GM2 or NileCAM81 GMSL2, 5–10 m FAKRA, PoC, hardware sync. Not Cooke /i unless you bolt a reader on.

Cine A-cam: still PYXIS 6K PL if /i + BRAW matter. Parallel, not instead of CSI.

You can mix: CSI body + two GMSL sats + PYXIS as a hero that records its own card. Three different pipes, one NAS sidecar format.

Don’t

  • Assume a $160 Arducam “just works” on Thor JetPack 7. Device-tree work.
  • Assume GMSL 4K @ 60. GMSL2 6 Gbps is tight for RAW12 4K60 (~6 Gbps payload). 4K30 RAW12 (~3 Gbps) is the honest sat.
  • Buy GMSL without picking the deserializer + BSP in the same PO as the cameras.

How many GMSL2 cameras can Thor actually host?

The brochure number is 8. The honest 4K RAW number is 4. 20 is not GMSL — that is HSB / Camera-over-Ethernet.

The three ceilings (they are not the same)

CeilingNumberWhat it actually means
Catalog deser board8CTI JCB022: 4× MAX9296A, 8× GMSL2 coax, 16 CSI lanes out, 75×57 mm, 45 g, PoC. Mates CTI Rogue-T5 / Gauntlet camera header. FORECR GMSL add-on is the same 8-ch story.
Thor NVCSI fabric16 lanes / 6 cameras / 32 VCsDS-11945 ch. 2.10 / 4.1. NVIDIA GMSL framework: 12 with ISP, 16 VC with ISP / 24 without. T4000 has one ISP.
4K30 RAW12 on GMSL24 at 4-lane, 8 at 2-lanePayload ~3 Gbps/cam. GMSL2 6 Gbps/link fits 4K30 RAW12; 4K60 RAW12 (~6 Gbps) does not. A 4K module wants 4 CSI lanes after deser. 16 lanes ÷ 4 = 4 cameras. 8 cameras on JCB022 is 2-lane each — 1080p-class or a squeezed 4K.
T4000 NVENC HQ2 × 4Kp30Even if 8 RAW streams arrive, Thor can HQ-encode two. The rest sit in DRAM or get UHP.
T4000 NVDEC9 × 4Kp30 HEVCOnly matters if the sats already encoded.

NVIDIA’s “up to 20 cameras” is HSB / CoE on Ethernet (FPGA bridge → MGBE), not FAKRA. Do not quote 20 as a GMSL2 count.

Working number for this kit: 1 CSI body on the box + up to 4 GMSL2 4K30 RAW sats on one JCB022 if we ever want RAW into ISP. 8 GMSL2 is a 1080p/2-lane plant. Past that, Ethernet.

Cable: 8–15 m FAKRA + PoC. Not 100 m.


GMSL2 RAW vs encode-on-camera then Ethernet

This is the real fork. Same pixels can leave the sensor as Bayer on coax or as H.265 on Cat6. They are not interchangeable.

GMSL2:  sensor ──CSI──► MAX9295 ──6 Gbps coax 8–15 m──► MAX9296 ──CSI──► Thor ISP ──NVENC──► HEVC
PoE:    sensor ──CSI──► RV1126 ISP+HEVC ──~80 Mbps Cat6 100 m──► switch ──► Thor NVDEC (AI) / remux (record)
GMSL2 (RAW into Thor)Inline 4K H.265 + Ethernet
What Thor seesBayer / YUV, native NVCSIAlready-compressed RTSP/ONVIF
Per-cam payload (4K30)~3 Gbps RAW12~40–80 Mbps HEVC HQ
Honest cam count on T40004 4K RAW (8 at 1080p)Dozens on 5GbE; ~9 if Thor must NVDEC every stream for AI
Cable8–15 m 50 Ω coax, FAKRA, PoC100 m Cat5e/6, PoE af/at
PowerPoC 12 V on the same coaxPoE switch (Thor has no PoE)
SyncHardware FSYNC through SerDes. This is why GMSL exists.PTP / 802.1AS (Thor has it). Weaker than genlock. Fine for v1.
Latency~1 frame + SerDes lockEncoder GOP + network. Cheap IPC is 50–200 ms. Not a live EVF.
ISP / SLAM / NVENC on pixelsYes. Thor ISP, cuVSLAM, NVENC HQ.No RAW. Thor remuxes the take; NVDEC a proxy for AD/overlay.
Cooke /iAlmost never on the module. Add a barrel reader.Same. UART sidecar over Ethernet is actually easier.
Bring-upDevice tree, I2C aliasing, SerDes lock, BSP. Weeks.RTSP/ONVIF. Days.
BOM, 2 satsCams $150–2k + deser $400–1.5k + FAKRA$50–200 / cam turret + a PoE switch
FailureSerDes unlock, PoC current, DTNetwork, GOP, ONVIF quirks
CatalogCommon in auto/industrial. Not cine. See list above.Every IP camera on earth.

When GMSL2 is the right sat: the sat is close (<15 m), you want RAW into Thor ISP (tracking, SLAM, your own NVENC look), and you will pay for FSYNC. Alvium GM2 / NileCAM81 / VC IMX585+GMSL adapter.

When encode-on-sat is the right sat: anything across a stage, anything cheap, anything we already steered (hybrid fabric, T4000 HQ cannot encode 1+2). This is the bring-up plant.

Do both at the connector level, not as two products. Body = CSI (or one GMSL hop if the sensor sits 1–2 m off the box). Sats = PoE H.265. Add a JCB022 later if a sat needs to become a RAW tracker. Do not make every sat GMSL — you will run out of CSI lanes, ISP, and NVENC before you run out of set.

HSB/CoE is the third path (RAW-class over Ethernet, FPGA on the camera). Worth a later look; not cheap, not a $50 turret.


What a “turret” is

CCTV housing slang, not a PTZ and not a tank:

ShapeWhat
Turret / eyeballBall-and-socket. Lens sits in a sphere you twist by hand after the base is screwed to the wall. No bubble, so IR doesn’t bounce. The cheap 4K PoE cameras.
DomeSame guts under a plastic bubble. Harder to aim, vandal-resistant.
BulletLong tube on a bracket. Deterrent shape, longer lenses.

When we say “buy a turret,” we mean a complete PoE + IMX415 + RV1126 + H.265 + ONVIF camera in that eyeball shell, ~$50–150. Ethernet and hardware 4K encode are already in there. We do not want the shell as the product.


Cheap hardware for Ethernet + hardware 4K H.265

Sat SoC is Rockchip RV1126B (newer) or RV1126 (same job, cheaper stock). They are close enough that a turret on either silicon is a valid encode mule.

SoCEncodeNotes
RV1126BH.265/H.264 4K30 (brochure 4K45 / 12 MP30, to 200 Mbps)Prefer. 4× A53, 3 TOPS, GbE, USB3. Fanconn / Boardcon MINI1126B-P, EASY-EAI, G126BP-IPC modules.
RV1126H.265/H.264 4K30 + 1080p30 second stream4× A7, 2 TOPS, ~5 W. Most $50 turrets. Fine if that’s what’s in the shell.
HiSilicon Hi3519A4K60, better ISPExport-painful in the US. Skip unless a camera we already opened has it.
Ambarella CV2/CV5cinema-gradeWrong price.
RK35884K encode and a desktopOverkill; mini-PC size and watts.

Crack a turret vs buy a module (we make our own case)

Crack a PoE turretRV1126B IPC module / EVB
First picture to ThorHours. RTSP/ONVIF, PoE, 4K30 H.265 already work.Days. Flash SDK, wire sensor, bring up rkipc.
UART / GPIOUsually none you can reach. Closed firmware, may phone home.Yes. UART for /i and 1D ToF, GPIO, SDK.
LensSoldered M12.MIPI CSI — C-mount / our glass later.
Lidar sidecarYou will fight the vendor image.This is why we own the board.
CaseTheir eyeball is junk for a set. We throw it away.We were printing a case anyway.
Cost$50–150 completeEVB $160–244; 38 mm core $90–135

Both. One or two turrets this week as a known-good encode+PoE reference (does Thor remux? does NVDEC decode for AD?). The sat we ship is the module in our case, because Cooke /i and lidar need pins a sealed turret will not give us. Cracking is not easier than an EVB once we are fabricating the housing — it is only easier for the first RTSP packet. Do not design the product around the board you pulled out of a Hikvision-shaped shell.

BuyStreetRole
RV1126/B + IMX415 turret, PoE, ONVIF$50–150Encode mule. Crack, keep the PCB, bin the shell.
RV1126B EVB + IMX415$160–244Software home. SDK, serial, Ethernet.
RV1126/B 38 mm core$90–135 1-offPath to C-mount sat we own.
Boardcon MINI1126B-PquoteNewer B silicon, GbE on module.

Bitrate we haul: ~80 Mbps/cam 4K30 (STREAM-BUDGET). 3 sats ≈ 0.24 Gbps. Gigabit PoE + Thor 5GbE is plenty. T4000 NVDEC 9× 4Kp30 is the AI ceiling, not the NIC.


Lidar on the data cameras

Feasible. Not “a Livox on every $80 sat.”

TierWhatStreetOn every sat?
1D ToF (Benewake TFmini-S / TF-Luna)Subject distance, 0.1–12 m, UART, ~0.7 W, 10–40 g$25–45Yes. JSONL sidecar next to /i. Needs the module UART, not a sealed turret.
2D spin (YDLIDAR T-mini Plus)360° × 12 m, ~45 g, robot-vac class~$80No. Room layout, not picture-aligned depth.
3D lidar (Livox Mid-360S)360° × 59°, 200 kpts/s, Ethernet, 65 mm cube, 265 g~$550One on the rig, not per camera. Another Ethernet endpoint on the PoE switch.
Stereo / iToF (Orbbec Gemini, etc.)Depth image, GMSL or USB$200–800Body, if we want occlusion better than Depth Anything.

Working plant:

  • Body / rig: one Mid-360S (or a stereo/ToF) as an Ethernet peer. Point cloud is a fourth “camera” on the switch. 905 nm Class 1 — still a laser on a film set; flag it.
  • Every picture sat: TFmini-S on UART → distance in the sidecar. Cheap, metric scale for SLAM, not a point cloud.
  • Thor already runs cuVSLAM + Depth Anything on the body HEVC/CSI. Per-sat 3D lidar does not replace that and does not fit the BOM.

Do not put 265 g / $550 on each eyeball. Do not skip the 1D ToF — that is the “lidar on all data cameras” that actually ships.


How big / heavy is Thor — and should it live in the camera body?

The module (what production is)

mmgW
T4000 SOM (DS-11945 §6.4)87.0 × 100.0 × 15.29350 ±4%70 default / 90 throttle
ATS passive HS ATS-NVP-373987 × 100.8 × 20168100 W @ 50 °C with 500 LFM (not still air)
ATS active HS ATS-NVA-374087 × 100.8 × 20 (fan in fins)10495 W @ 50 °C
ATS blower ATS-NVA-375292 × 100.8 × 28.6174175 W — T5000-class, skip
SOM + HS~87 × 101 × ~36~450–520still needs a carrier

TTP contact patch is 62.5 × 81.4 mm. Resin is not a heat sink. Full thermal math: references/THERMAL.md.

The carrier (you cannot skip this)

mmg
CTI Rogue-T5 AGX30292 × 108136 (product page; T4000 and T5000)
FORECR DSBOARD-THRMAX140 × 125
NVIDIA AGX Thor Dev Kit243.19 × 112.40 × 56.88brick

Rogue-T5 is the preferred carrier (2026-09-02). Smallest production board that takes T4000 and T5000; camera I/O is an add-on (JCB022 GMSL, JCB003 3G-SDI, MIPI). 2× 10GbE + 2.5G on locking IX plugs (need breakout cables). 12 V.

Rogue-T5 + T4000 + HS is the smallest catalog stack: about 92 × 108 × 40–55 mm plus connectors, ~0.7–1.0 kg before battery, lens, NVMe. FORECR is a bigger rectangle with QSFP.

Against a cine body

mmkgW (picture)
PYXIS 6K body119 × 106 × 1511.5~15–25 class
T4000 + Rogue + HS (no lens, no batt)~92 × 108 × 50~0.8–1.070
AGX kit in our resin shell243 × 112 × 57 (+ walls)kit + resin40–130

The SOM sandwich is smaller in two axes than PYXIS and a lot hotter. PYXIS depth is the PL mount + sensor stack. Ours would be: PL (or C) on the front, CSI flex 20 cm to Thor, heatsink exhaust, V-mount on the back.

Verdict: Thor-in-body is still the product shape — thermal is the hold

TDG-12271-001 v1.3 is in tree. Read references/THERMAL.md before any solid body CAD.

Coolest (and right) shape: one box that is the camera. T4000 + Rogue-T5 + CSI body sensor + PL /i reader + NVENC

  • 10GbE. Sats are PoE H.265 on RV1126B, not more Thors.

Do not put the AGX kit in a cine body. 243 mm brick, 130 W. The resin shell is a fit-check of the lab brick, not the product.

Do not put a Thor in every sat. $2,749 + 70 W + 350 g per eyeball.

Do not freeze a sealed handheld at 70 W. NVIDIA allows a passive or active cooler on the TTP. The math does not: 70 W in still air needs ~0.55–0.69 °C/W, which a small extrusion is not. A PYXIS-sized metal shell dumps ~40 W natural convection. Prefer radiators / heatpipes / vapor chamber, not a flock of fans:

  1. Body-as-radiator, fanless — honest at record-only / AI dropped (~15–40 W). Matches drop-AI-never-record.
  2. Heatpipes to a rear / V-mount radiator + one large slow fan — 70 W AI. Cine already sounds like this.
  3. Remote radiator on the battery plate — optical body silent.

Measure T4000 + Rogue-T5 + ATS on the bench (thermocouple on TTP per TDG Fig. 3-2) before promising sun-load or a magnesium shell. Lab stays the AGX kit. Production body is metal. Those are two different objects; do not confuse the CAD.