====== DS Linker Writer/N-Card (Slot-2 USB cart) ====== The DS Linker Writer (also known as the N-Card, ExpressCard, DS Fire Link, etc.) is a Slot-2 GBA cartridge with an USB controller; in combination with a software USB stack running on the DS itself, it allows the console to act as an USB device. Two variants exist: * the "D12", featuring USB 1.1 support, based on a PDIUSBD12 chip. * This chip was only used in early batches of the card. * Due to a regression bug, this variant only works with older releases of uDisk. It also doesn't support homebrew built with the open source Keil stack. * the "D14", featuring USB 2.0 support, based on an ISP1581 (or equivalent) chip. * The most common variant. To identify the variant in your possesion, you can use nrio-usb-disk (linked below), which displays the detected chip ID: * ''1012'' - "D12" board (PDIUSBD12-based) * ''1581'' - "D14" board (ISP1581-based) * other values - unknown chip * The TinyUSB stack used by nrio-usb-disk can support ''1582'' and ''1583'' boards (ISP1582/83-based), if any such turn out to exist. * ''0000'', ''FFFF'' - unknown board (or no board!) Alternatively, you can compare the PCB with photos available below. ===== Software ===== * [[https://github.com/asiekierka/nitrotracker|NitrousTracker]] - music tracker, supports USB MIDI in versions 0.4.11+ * [[https://github.com/asiekierka/nrio-usb-disk|nrio-usb-disk]] - USB mass storage driver, compatible with any Slot-1 DLDI flashcart * DSMouse - mouse emulator * DSPad - gamepad emulator * DSPad Tilt - gamepad emulator with motion controls (DSMotion/MK6/R6 required in Slot-1) * uDisk - official USB mass storage driver, supports N-Card only ===== Implementations ===== * [[https://github.com/asiekierka/nrio-usb-examples/|TinyUSB port]] - MIT licensed * Requires a recent version of BlocksDS; comes with examples. * Full support for "D14" and "D12" boards. * Keil USB stack port by the N-Card/DS Linker team * Contains examples intended for an ancient version of devkitARM/libnds. * Full support for "D14" boards. * No support for "D12" boards. ===== Photos ===== ==== Cartridges ==== These cartridges are compatible with the N-Card/DS Linker Writer. Note that the casing color differs between batches. {{gallery>:notes:flashcart:ds_linker_writer:types}} (Source: ApacheThunder, Disturbo) ==== PCB (DS Fire Link, D14) ==== {{gallery>:notes:flashcart:ds_linker_writer:pcb_sylverrez}} (Source: SylverReZ) ==== PCB (ExpressCard Writer, D14) ==== {{gallery>:notes:flashcart:ds_linker_writer:pcb_sylverrez_2}} (Source: SylverReZ) ==== PCB (N-Card, D14) ==== {{gallery>:notes:flashcart:ds_linker_writer:pcb_disturbo}} (Source: Disturbo) ==== PCB (DS Fire Link, D12) ==== {{gallery>:notes:flashcart:ds_linker_writer:pcb_d12}} ===== Wiring ===== ==== D14 (ISP1581) ==== The DS Linker Writer uses an ISP1581 (or clone, depending on batch) USB controller and a 12 MHz crystal. In theory, it should be possible to replace the chip with an ISP1582 or ISP1583 in newer designs while maintaining compatibility. TODO: Mark power pin connections? _____ / \ DGND / 1 64 \ VCC(3.3) VCC(5.0) / 2 _ 63 \ TEST AGND / 3 / \ 62 \ WAKEUP VCCA(3.3) / 4 \_/ 61 \ DGND USB D- <> D- / 5 60 \ XTAL1 <- 12 MHz oscillator USB D+ <> D+ / 6 59 \ XTAL2 -> 12 MHz oscillator RPU / 7 58 \ VCC(3.3) RREF / 8 57 \ DATA15 <> GBA AD15 MODE1 / 9 56 \ DATA14 <> GBA AD14 /RESET / 10 55 \ DATA13 <> GBA AD13 EOT / 11 54 \ DATA12 <> GBA AD12 DREQ / 12 53 \ DATA11 <> GBA AD11 DACK / 13 52 \ DATA10 <> GBA AD10 DIOR / 14 51 \ DATA9 <> GBA AD9 DIOW / 15 50 \ DATA8 <> GBA AD8 INTRQ / 16 49 \ DATA7 <> GBA AD7 / \ \ Philips/NXP ISP1581 / /CS1 \ 17 48 / DATA6 <> GBA AD6 /CS0 \ 18 47 / DATA5 <> GBA AD5 DA0 \ 19 46 / DATA4 <> GBA AD4 DA1 \ 20 45 / DATA3 <> GBA AD3 DA2 \ 21 44 / DATA2 <> GBA AD2 READY \ 22 43 / VCC(3.3) DGND \ 23 42 / DGND VCC(3.3) \ 24 41 / DATA1 <> GBA AD1 GBA /CS <-/CS \ 25 40 / DATA0 <> GBA AD0 GBA /RD <- /RD \ 26 39 / AD7 <- GBA A23 GBA /WR <- /WR \ 27 38 / AD6 <- GBA A22 GBA /IREQ <- INT \ 28 37 / VCC(3.3) A0 \ 29 36 / DGND GBA A16 -> AD0 \ 30 35 / AD5 <- GBA A21 GBA A17 -> AD1 \ 31 34 / AD4 <- GBA A20 GBA A18 -> AD2 \ 32 33 / AD3 <- GBA A19 \ / \ / \ / V GBA cartridge port |________________________________| |: :| |::::::::::::::::::::::::::::::::| 1 |::::::::::::::::::::::::::::::::| 32 |||||||||||||||||||||||||||||||'- /GND ||||||||||||||||||||||||||||||'- /IREQ |||||||||||||||||||||||||||||'- /CS2 |||||||||||||||||||||'+++++++- A16-23 ||||||||||||||||||||| |||||'+++++++++++++++- AD0-15 ||||'- /CS |||'- /RD ||'- /WR |'- PHI '- VDD ==== D12 (PDIUSBD12) variant ==== A much rarer, alternate design uses a PDIUSBD12 chip instead, configured with a separate address/data bus. In theory, it should be possible to replace the chip with an FT120, a modern replacement chip, while maintaining compatibility. However, minor differences exist, and this has not been tested on actual hardware. TODO: Mark power pin connections? /\ / \ / \ : 28 \ A0 <- GBA A16? _./ 27 \ VOUT(3.3) / 26 \ D+ <> USB D+ / o 25 \ D- <> USB D- GBA AD0 <> DATA0 \ 1 24 \ VDD GBA AD1 <> DATA1 \ 2 P 23 \ XTAL2 -> 12 MHz oscillator GBA AD2 <> DATA2 \ 3 D 22 \ XTAL1 <- 12 MHz oscillator GBA AD3 <> DATA3 \ 4 I 21 \ GL_N -> LED GND -- GND \ 5 U 20 \ /RESET <- GBA AD8? GBA AD4 <> DATA4 \ 6 S 19 \ /EOT GBA AD5 <> DATA5 \ 7 B 18 \ /DMACK GBA AD6 <> DATA6 \ 8 D 17 \ DMREQ GBA AD7 <> DATA7 \ 9 1 16 \ /WR <- GBA /WR GND -- ALE \ 10 2 15 \ /RD <- GBA /RD GBA /CS -> /CS \ 11 / SUSPEND \ 12 / CLKOUT \ 13 / GBA /IREQ <- /INT \ 14 / \ / \ / \/ ===== Links ===== * [[https://media.digikey.com/pdf/Data%20Sheets/NXP%20PDFs/ISP1581.pdf|ISP1581 datasheet (Rev 06)]]