Native Shell
Native Shell은 모든 플랫폼의 앱 안에서 만들어지는 AI UI입니다
Ledger Nano X 메인 보드의 인터랙티브 지도, 테스트 패드·배선·KiCad 재구성·2D·3D 뷰어 제공
Interactive map of the Ledger Nano X main board: test pads, traced nets and a KiCad reconstruction with 2D photo and 3D viewers
개발 도구Python · HTMLGitHub @KarpelesLab온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An interactive map of the Ledger Nano X main board: its 40 test pads, the copper traces between them and the chips, and a KiCad reconstruction of the whole board.
View it online: https://karpeleslab.github.io/ledger_nano_x_pads/
This is a reconstruction from photos, not the manufacturer's design: inner layers are assumed, footprints are approximate, and names ending in "?" are likely but not confirmed.
The 40 numbered test pads on the back of the board, as labelled in the photos. Names ending in "?" are likely but not confirmed; the others were measured or follow from what the pad connects to.
| Pad | Signal | Notes |
|---|---|---|
| 01 | USB CC2 | |
| 02 | Left button power | Lets the left button also act as the power button; exact role not yet known |
| 03 | not identified | |
| 04 | MCU PB7 | MCU PB7 through R30; role not known |
| 05 | PD SCL | STUSB4500L pin 7, I2C clock (not to the MCU, likely for configuration), as TP09 is its SDA |
| 06 | BAT NTC | The battery's temperature sensor (NTC): battery pad 1, and through R1 the charger's TH pin (PWR1 pin 8) |
| 07 | Charger input? | Input supply of the L6924D charger (PWR1 pins 1, 2), fed from VBUS by the X12 power switch, also the anode of the X9 Zener; R31 feeds it to the MCU PA1 voltage sense; not measured |
| 08 | not identified | |
| 09 | PD SDA | STUSB4500L pin 8, I2C data (not to the MCU, likely for configuration), as TP05 is its SCL |
| 10 | I2C1 SCL | |
| 11 | PD VBUS_EN_SNK | |
| 12 | VBUS | |
| 13 | Charger VREF | 1.8 V reference of the L6924D charger (PWR1 pin 12), decoupled by C37 |
| 14 | VBAT | Battery +: battery pad 3, the charger's battery sense (PWR1 VOSNS, pin 10), the fuel gauge (PWR2 pin 9) and X9's unconnected pin |
| 15 | Charger ST2 | Status output ST2 of the L6924D charger (PWR1 pin 3) to MCU PA2, a wake-up input |
| 16 | MCU PB3 | MCU PB3 through R16, with R28 and R29 (to TP07's net); role not known |
| 17 | I2C1 SDA | |
| 18 | Charger IPRG | Charge current program pin of the L6924D charger (PWR1 pin 15), with R14 to ground |
| 19 | Left button power | Lets the left button also act as the power button; exact role not yet known |
| 20 | SWCLK | Legacy SWD debug access: Ledger originally left the STM32 unlocked so users could verify the device's state over SWD. That was shown to be a risk, and the STM32 now ships locked, so this port can no longer be used |
| 21 | SWDIO | Legacy SWD debug access: Ledger originally left the STM32 unlocked so users could verify the device's state over SWD. That was shown to be a risk, and the STM32 now ships locked, so this port can no longer be used |
| 22 | Supply sense (MCU PA1) | Voltage sense into MCU PA1 (ADC1_IN6): R31 and R32 divide down the supply on TP07's net, R32 to ground |
| 23 | GND | |
| 24 | +3.3V rail | |
| 25 | MCU PA5 | MCU PA5, with R19 and R37; role not known |
| 26 | MCU NRST | |
| 27 | Charger SD | MCU PA7 (pin 16), joined on an inner layer to the shutdown pin (SD, pin 7) of the L6924D charger, which R11 holds low to enable it: PA7 can likely switch charging off |
| 28 | Left button | |
| 29 | SE RESET | |
| 30 | SE CLK-IN | |
| 31 | OLED SPI CS | |
| 32 | SEPROXYHAL | |
| 33 | OLED RESET? | Likely OLED reset, not confirmed: goes to the main MCU, not the secure element |
| 34 | OLED CLK | |
| 35 | OLED MOSI | |
| 36 | OLED D/C | |
| 37 | OLED VCOMH? | BTB pin 9, filtered by C31 to ground: likely the OLED controller's VCOMH, which only needs a capacitor; not measured |
| 38 | OLED VCC | The OLED panel supply (7.5 to 16.5 V for an SSD1312): output of the X10 TLV61046A boost converter, to BTB pin 12; voltage not measured |
| 39 | OLED IREF? | Likely the OLED controller's IREF, with R33 to ground setting the segment current; not measured |
| 40 | Right button |
| Path | Contents |
|---|---|
flip.html | Photo viewer |
img/ | Photos of both sides, with and without components, aligned to the same pixel grid; xray.png, an X-ray mosaic of the whole board, seen from the back like the photos; se1_die/, microscope photos of the decapped secure element die, a 50x overview and four 100x quarters, in the die's own orientation (ST logo top left) |
traces.js | Traced nets: segments per side, vias, ground connection points, names and purposes |
pads.js | The 40 test pads and their signal names |
components.js, passives.js | Chips, connectors and other parts; resistors and capacitors |
kicad/ | KiCad project generated from the data above, plus the 3D viewer and the scripts that build them |
kicad/se1_ct.js | Model of the secure element from an X-ray CT scan, which the 3D viewer loads when zoomed in on it |
kicad/se1_die.jpg | Photo of the secure element die's top metal layer (the ST K500A die), stitched from the four 100x shots in img/se1_die/, cropped to the die edge and turned to match the CT model; the 3D viewer lays it on the die of the CT model |
index.html | Landing page of the published site |
Open flip.html in a browser; no server is needed. The traces are edited directly in traces.js, one trace
per line with its points in pixel coordinates of the photos. After drawing, kicad/cleanup_traces.py then
kicad/octilinear.py square the segments to 0/45/90 degrees without changing any connection.
After changing the data, rebuild the KiCad reconstruction and the viewer data (needs KiCad 10 and its Python module):
kicad/regenerate.sh # board, schematic, zone fill, consistency check, overlay.js and scene.js
kicad/render.sh # optional: 3D renders and a STEP file
regenerate.sh overwrites kicad/nanox.kicad_pcb and kicad/nanox.kicad_sch, so edits made in KiCad
itself would be lost.
The site is published by .github/workflows/pages.yml on every push to master.
Original reverse engineering work by Karpeles Lab Inc., made available for the public good.
kicad/ and the workflow): MIT.Ledger and Nano X are trademarks of Ledger SAS; this project is not affiliated with or endorsed by Ledger.