Difference between revisions of "DCSD Cable"

From The iPhone Wiki
Jump to: navigation, search
m (Add link to serialsh)
(No need. Both are separately categorized. (hardware/software))
 
(10 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[File:DCSD_Front_annotated.jpg|right|thumb|Annotated photo of the main DCSD PCB]]
+
[[File:DCSD_Front_annotated.jpg|right|thumb|Annotated photo of the original Alex DCSD PCB]]
   
The '''DCSD Alex cable''' is used in factories to communicate over serial to run tests and write to the SysCfg (for serial definitions, etc) during production. These cables are produced by Shenzhen Alex Connector Co. Ltd. in China; this may be why they can be found on obscure markets for sale, if not just taken from a trash can from factories.
+
The '''DCSD Alex cable''' is used in factories to communicate over serial to run tests and write to the SysCfg (for serial definitions, etc) during production. These cables are produced by ShenZhen Alex Connector Co., Ltd. in China. They can be purchased from obscure markets. There are two known types of DCSD cable. An older one, with lights and only one USB female USB connector, and a newer model, which lacks lights, and has two female USB connectors.
   
== PCB ==
+
== 'DCSD Alex' PCB ==
=== Top of the board ===
+
=== Top of the board items of interest===
 
{| class="wikitable" |
 
{| class="wikitable" |
 
! Label
 
! Label
 
! Chip
 
! Chip
 
! Datasheet
 
! Datasheet
! Notes
+
! Noted
 
|-
 
|-
 
| D1
 
| D1
Line 24: Line 24:
 
| U1
 
| U1
 
| rowspan="2" | Micrel 2026A Dual-Channel Power Distribution Switch
 
| rowspan="2" | Micrel 2026A Dual-Channel Power Distribution Switch
| rowspan="2" | http://www.xilinx.com/products/boards/ml510/datasheets/mic2076-2bm.pdf
+
| rowspan="2" | https://web.archive.org/web/20141010122122/http://www.xilinx.com/products/boards/ml510/datasheets/mic2076-2bm.pdf
 
|
 
|
 
|-
 
|-
Line 66: Line 66:
 
|}
 
|}
   
=== Back of the board ===
+
=== Back of the board items of interest ===
 
{| class="wikitable" |
 
{| class="wikitable" |
 
! Label
 
! Label
Line 80: Line 80:
 
| J12
 
| J12
 
|}
 
|}
  +
  +
== 'DCSD 3.1' PCB ==
  +
This cable is made specifically for USB-C devices such as the newer models in the iPad Pro line, this cable also supports USB 3.1.
  +
USB connection from the main board splits out into a Y-style cable but turns back into one connection in the USB-A male connector .
  +
  +
=== Top of the board items of interest ===
  +
{| class="wikitable" |
  +
! Label
  +
! Chip
  +
! Datasheet
  +
! Notes
  +
|-
  +
| U4
  +
| FTDI FT232RQ UART IC
  +
| http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf
  +
| Handles stoplight LED controls
  +
|-
  +
| J2A
  +
|
  +
|
  +
| Presumably test points for UART
  +
|-
  +
| USB-A male connector
  +
|
  +
|
  +
| I haven't actually cut into the hard plastics yet but I presume this is where the actual USB hub is hosted.
  +
|}
  +
  +
=== Back of the board items of interest ===
  +
There's not much on the back of the board that you couldn't technically see from the front, no ICs or anything of interest really.
  +
  +
[[File:DCSD_USBC_3_1_annotated.png|right|thumb|Annotated photo of the DCSD 3.1 PCB]]
   
 
=== Other notes ===
 
=== Other notes ===
Line 85: Line 117:
 
* This PCB is quite easy to replicate, but without the proper Accessory ID you will need to mimic the protocol similar to how key2fr did in his [http://ramtin-amin.fr/#tristar research].
 
* This PCB is quite easy to replicate, but without the proper Accessory ID you will need to mimic the protocol similar to how key2fr did in his [http://ramtin-amin.fr/#tristar research].
 
* In theory, you can use the Tristar for JTAG through a similar board, but JTAG gets disabled by the device during boot due to production fusing status.
 
* In theory, you can use the Tristar for JTAG through a similar board, but JTAG gets disabled by the device during boot due to production fusing status.
  +
* In USB-C capable Macs Apple takes care to note the low speed USB2 pins on the TOP or BOTTOM of the connector (which are usually identical to support passive USB-C <-> USB-A cables). This suggests that these pairs may be treated differently just like how the lightning DCSD cable had a proper TOP and BOTTOM side, which would provide a second USB device on the same plug.
   
 
== Uses ==
 
== Uses ==
   
 
=== Verbose Boot ===
 
=== Verbose Boot ===
One use of the cable was to view verbose boot. You could access this by setting [[Debug-uarts_(iBoot_variable)]] in [[iRecovery]] or nvram, however, since iOS 9, this output has been obfuscated.
+
One use of the cable was to view verbose boot. You could access this by setting [[Debug-uarts_(iBoot_variable)|debug uarts]] in [[iRecovery]] or nvram, however, since iOS 9, this output has been obfuscated.
   
=== SSH over serial ===
+
=== Shell over serial ===
Using [http://twitter.com/qwertyoruiopz qwertyoruiopz's] [https://twitter.com/qwertyoruiopz/status/711455055401099264 serialsh], it is possible to SSH over serial. This is useful, because it does not require any SSH daemon other than those shipped with iOS. An example use case for this would be protecting against bootloops.
+
Using [http://twitter.com/qwertyoruiopz qwertyoruiopz's] [https://twitter.com/qwertyoruiopz/status/711455055401099264 serialsh], it is possible to get shell over serial. This is useful, because it does not require any additional daemons other than those shipped with iOS. An example use case for this would be protecting against bootloops.
   
 
=== Debugging the kernel ===
 
=== Debugging the kernel ===
 
Using the DCSD cable, it is possible to attach GDB to the iOS kernel, and pause it's running.
 
Using the DCSD cable, it is possible to attach GDB to the iOS kernel, and pause it's running.
  +
[[Category:Cables]]

Latest revision as of 03:52, 21 December 2020

Annotated photo of the original Alex DCSD PCB

The DCSD Alex cable is used in factories to communicate over serial to run tests and write to the SysCfg (for serial definitions, etc) during production. These cables are produced by ShenZhen Alex Connector Co., Ltd. in China. They can be purchased from obscure markets. There are two known types of DCSD cable. An older one, with lights and only one USB female USB connector, and a newer model, which lacks lights, and has two female USB connectors.

'DCSD Alex' PCB

Top of the board items of interest

Label Chip Datasheet Noted
D1 Low Power Consumption Voltage Regulator with ON/OFF Switch http://www.s-manuals.com/pdf/datasheet/x/c/xc6215_series_torex.pdf
D5
D6 Tied to TX and an input voltage of 3.3V on the UART J5 pads, this may be a protection in case the host shorts?
U1 Micrel 2026A Dual-Channel Power Distribution Switch https://web.archive.org/web/20141010122122/http://www.xilinx.com/products/boards/ml510/datasheets/mic2076-2bm.pdf
U2
U3 FTDI FT232RQ UART IC http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf Handles stoplight LED controls
U4 Micrel MIC5219 http://datasheet.datasheetarchive.com/originals/library/Datasheets-EDS7/DSAEDA000124178.pdf 500mA Peak Output LDO Regulator
U5 FTDI FT232RQ UART IC http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf Handles serial mux interface from iPhone
U6 SMSC USB2514 4-port USB hub http://www.mouser.com/catalog/specsheets/2514.pdf
  • The use of this deprecates the previous "Y" style cable, which used two separate USB cables for serial and iPhone data communication
  • Three ports are used:
    1. iPhone Data USB
    2. U4 FTDI IC
    3. U5 FTDI IC
U7 Microchip 24AA04/24LC04B http://ww1.microchip.com/downloads/en/DeviceDoc/21708G.pdf I2C Serial EEPROM (TSSOP Package)
X1 MKC 24 MHz Oscillator N/A I'm not 100% sure about the value of the chip, but this should be correct

Back of the board items of interest

Label Notes
J9 I believe these are used to flash the U7 EEPROM with USB IDs for use by the SMSC USB Hub, I have yet to dump the contents of the EEPROM to find out for sure.
J10
J11
J12

'DCSD 3.1' PCB

This cable is made specifically for USB-C devices such as the newer models in the iPad Pro line, this cable also supports USB 3.1. USB connection from the main board splits out into a Y-style cable but turns back into one connection in the USB-A male connector .

Top of the board items of interest

Label Chip Datasheet Notes
U4 FTDI FT232RQ UART IC http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf Handles stoplight LED controls
J2A Presumably test points for UART
USB-A male connector I haven't actually cut into the hard plastics yet but I presume this is where the actual USB hub is hosted.

Back of the board items of interest

There's not much on the back of the board that you couldn't technically see from the front, no ICs or anything of interest really.

Annotated photo of the DCSD 3.1 PCB

Other notes

  • The Lightning Connector has a specific Accessory ID flashed to it for enabling serial via the Tristar chip.
  • This PCB is quite easy to replicate, but without the proper Accessory ID you will need to mimic the protocol similar to how key2fr did in his research.
  • In theory, you can use the Tristar for JTAG through a similar board, but JTAG gets disabled by the device during boot due to production fusing status.
  • In USB-C capable Macs Apple takes care to note the low speed USB2 pins on the TOP or BOTTOM of the connector (which are usually identical to support passive USB-C <-> USB-A cables). This suggests that these pairs may be treated differently just like how the lightning DCSD cable had a proper TOP and BOTTOM side, which would provide a second USB device on the same plug.

Uses

Verbose Boot

One use of the cable was to view verbose boot. You could access this by setting debug uarts in iRecovery or nvram, however, since iOS 9, this output has been obfuscated.

Shell over serial

Using qwertyoruiopz's serialsh, it is possible to get shell over serial. This is useful, because it does not require any additional daemons other than those shipped with iOS. An example use case for this would be protecting against bootloops.

Debugging the kernel

Using the DCSD cable, it is possible to attach GDB to the iOS kernel, and pause it's running.