Comma 3 Teardown, Inside The Comma Three Devkit
This thing is mad expensive… so I was a bit hesitant of opening it up and finding out that I broke something in the process of putting it back together. But, as EEVBlog’s own Dave Jones always says: “don’t turn it on, tear it apart!" So, I turned it on, used it a few times, drove 100+ miles with it, then carely powered it off and then tore it apart (gently…).
Opening The Comma 3
–Turns out, this thing actually crazy simple to open up, it’s held together by 7 hex screws: 5 on the outer (connects the screen to the back plate) and 2 towards the middle-center (connects the backplate to the logic board) of the back case. Once you’ve taken out the screws DO NOT just yank the screen or the back plate off: you’ll risk damaging the ribbon cable that connects the screen from the logic board.
Screw heads required:
- 3.5 mm hex: inner screws
- 4 mm hex: outer screw
- 6 mm phillips: heatsink (on logic board)
Screws Pulled Out | Tool |
---|---|
Instead, prop up the the screen just slightly from the side that isn’t glued and take some plastic tweazers and gently remove the ribbon cable from the logic board.
OLED Display
Front | Back |
---|---|
There is no indication on what brand of OLED display the Comma 3 uses. It enclosed in a custom plastic case. Although, it seems to use a standard ribbon cable to connect to the display to the logic board. According to @geohot and his team, each Comma 3 is color-calibrated to the same white point. Whether these calibrations values are stored within the display’s firmware or the device itself is unknown, but you could actually buy these from comma.ai from their parts shop.
Display Specs
- Resolution: 2160x1080 OLED
ABS Injection-Molded Plastic Enclosure
Back | Inside |
---|---|
The plastic backplate has an RFID NFC tag attached to the inside. The brand of the tag appears to be a version of the SMARTRAC Circus NFC tag. Scanning the tag with a generic NFC reader app will display the device’s serial number and other properties. This is probably used to identify the device during the building process.
The Logic Board / Motherboard
This device is comma.ai’s first fully customized device for the sole purpose of self-driving / autonomous driving. The mainboard is custom-built around the SOC and cameras on the board.
Specs
- Snapdragon 845 SOC
- 8 Cores, underclocked to 1.68 GHz (from 2.8 GHz)
- Qualcomm X20 LTE Modem (not in use)
- Qualcomm Adreno 630 GPU
- Wifi AC (2.4 GHz / 5 GHz)
- Bluetooth 5.0 (not in use)
- Thundercomm variant
- Quectel E-G25G LTE Modem
- T-Mobile MVNO (US Customers) - LTE IoT @ 512 Kbps
- TAOGLAS AGGBP.25A.07.0060A GPS
- 1 Stage 18dB
- Front End SAW Filter
- AR0231 Automotive Camera (x3)
- 1080p Resolution
- 3x3µm size/pixel (“large” pixel)
- 30 fps
- x2 185° FOV Lens (driver cam & front wide cam)
- possible official/variant
- Samsung 980 NVMe SSD
- 256 GB or 1 TB
- Custom Heatsink
- 40mm x 10mm Fan Size
- Unknown Noise Level (dB)
- Unknown Speaker
- 3 Watts
- STM32F413 MCU
- CAN-Bus decode-capable microcontroller (same MCU has Black Panda)
Sys Dump
1comma@tici:/data/openpilot$ lscpu
2Architecture: aarch64
3CPU op-mode(s): 32-bit, 64-bit
4Byte Order: Little Endian
5CPU(s): 8
6On-line CPU(s) list: 0-4
7Off-line CPU(s) list: 5-7
8Thread(s) per core: 1
9Core(s) per socket: 2
10Socket(s): 2
11Vendor ID: Qualcomm
12Model: 12
13Stepping: 0x7
14CPU max MHz: 1689.6000
15CPU min MHz: 300.0000
16BogoMIPS: 38.40
17L1d cache: 160 KiB
18L1i cache: 160 KiB
19L2 cache: 640 KiB
20L3 cache: 2 MiB
21Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
22
23comma@tici:/data/openpilot$ mmcli -m 0
24 -----------------------------------
25 General | path: /org/freedesktop/ModemManager1/Modem/0
26 | device id: ######################################
27 -----------------------------------
28 Hardware | manufacturer: QUALCOMM INCORPORATED
29 | model: QUECTEL Mobile Broadband Module
30 | firmware revision: EG25GGBR07A08M2G
31 | carrier config: Commercial-TMO_VoLTE
32 | carrier config revision: 05010505
33 | h/w revision: 10000
34 | supported: gsm-umts, lte
35 | current: gsm-umts, lte
36 | equipment id: #################
37 -----------------------------------
38 System | device: /sys/devices/platform/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1.1
39 | drivers: option, qmi_wwan
40 | plugin: quectel
41 | primary port: cdc-wdm0
42 | ports: cdc-wdm0 (qmi), ttyUSB0 (qcdm), ttyUSB1 (gps),
43 | ttyUSB2 (at), ttyUSB3 (at), wwan0 (net)
44 -----------------------------------
45 Numbers | own: ##############
46 -----------------------------------
47 Status | lock: sim-pin2
48 | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (10), sim-puk2 (10)
49 | state: connected
50 | power state: on
51 | access tech: lte
52 | signal quality: 63% (cached)
53 -----------------------------------
54 Modes | supported: allowed: 2g; preferred: none
55 | allowed: 3g; preferred: none
56 | allowed: 4g; preferred: none
57 | allowed: 2g, 3g; preferred: 3g
58 | allowed: 2g, 3g; preferred: 2g
59 | allowed: 2g, 4g; preferred: 4g
60 | allowed: 2g, 4g; preferred: 2g
61 | allowed: 3g, 4g; preferred: 4g
62 | allowed: 3g, 4g; preferred: 3g
63 | allowed: 2g, 3g, 4g; preferred: 4g
64 | allowed: 2g, 3g, 4g; preferred: 3g
65 | allowed: 2g, 3g, 4g; preferred: 2g
66 | current: allowed: 2g, 3g, 4g; preferred: 4g
67 -----------------------------------
68 Bands | supported: egsm, dcs, pcs, g850, utran-1, utran-4, utran-6, utran-5,
69 | utran-8, utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5,
70 | eutran-7, eutran-8, eutran-12, eutran-13, eutran-18, eutran-19,
71 | eutran-20, eutran-25, eutran-26, eutran-28, eutran-38, eutran-39,
72 | eutran-40, eutran-41, utran-19
73 | current: egsm, dcs, pcs, g850, utran-1, utran-4, utran-6, utran-5,
74 | utran-8, utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5,
75 | eutran-7, eutran-8, eutran-12, eutran-13, eutran-18, eutran-19,
76 | eutran-20, eutran-25, eutran-26, eutran-28, eutran-38, eutran-39,
77 | eutran-40, eutran-41, utran-19
78 -----------------------------------
79 IP | supported: ipv4, ipv6, ipv4v6
80 -----------------------------------
81 3GPP | imei: #################
82 | enabled locks: fixed-dialing
83 | operator id: 310260
84 | operator name: T-Mobile
85 | registration: home
86 -----------------------------------
87 3GPP EPS | ue mode of operation: csps-1
88 | initial bearer path: /org/freedesktop/ModemManager1/Bearer/0
89 | initial bearer apn: fast.t-mobile.com
90 | initial bearer ip type: ipv4v6
91 -----------------------------------
92 SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
93 -----------------------------------
94 Bearer | paths: /org/freedesktop/ModemManager1/Bearer/1
95
96comma@tici:/data/openpilot$ lsusb
97Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
98Bus 001 Device 005: ID bbaa:ddcc
99Bus 001 Device 004: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
100Bus 001 Device 002: ID 0000:0000
101Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
The Front
It’s hard to distinguish what exactly the components are, but here are my guesses on what’s on this side of the board:
- COTS M.2 NVMe Drive
- WiFi Modem
- Driver-monitoring camera + IR LEDs
- STM32 MCU for the on-board Panda
- MAXIM Audio Codec Chip
- SMSC USB Controller + FTDI Chip
- Various Voltage Regulatros
- USIM Card Tray
The Back
The back of the board shows the custom heatsink, the two cameras, the large speaker, x2 WiFi antennas, and two USB-C ports. The OBD-C port is the one exposed through the heatsink.
- 1 comma.ai’s custom OBD-C standard port
- 1 USB-C 3.1 Gen 2 port
The orange PCB is actually a WiFi/Bluetooth antenna
Beneath the large speaker is anyone’s guess… Maybe a piezo speaker? Or a tweeter?
There are two a very thick PCB-looking part to the left and right of the board. Upon closer inspection they appear to be cellular antennas.
The left antenna is under the speaker, so it’s difficult to distinguish what part number this is without removing it.
comma.ai wastes no space on this board. If you peek a little closer, sandwiched between the speaker and PCB, and right above the SIM card tray, there is the cellular module (in an RF enclosure). This is my guess, at least. Not entirely sure why comma.ai doesn’t just use the SOC’s LTE modem?
The Top
The comma 3 is hand-built for sure. From this angle you could see a few of probably many standoffs holding up various components, including the camera PCBs. You could also clearly see the GPS antenna. Oddly, it’s held up by 2 custom 3D-printed pieces (held up by more standoffs lol). I wonder how much they spend for standoffs?
Beneath
From the text on the orange PCB board, glued to the fan, is the shorter dual-band WiFi antenna.
The USB-C 3.1 Gen 2 connector is also clearly exposed from this angle. As well as more neat standoffs to hold up and angle the driver-monitoring camera.
Functional Results
That’s it! Not too complicated of a device. A developer, or electronics enthusiast, would probably have tons of fun utilizing all aspects of the device. AND, the camera quality is pretty good. I’ve already driven with this thing over 400+ miles and can say it is a bliss to use. Will post some road-cam results in a separate post here!