The original Sony PlayStation (PS1/PSX) controller and memory-card port is a 9-pin connector carrying a synchronous serial bus essentially equivalent to SPI. The four devices that can share a port (two controllers and two memory cards) all hang off the same clock, command, data and acknowledge lines; the console addresses one at a time by pulling that slot’s select line low. The data and acknowledge lines are open-collector, so devices can only drive them low. This page also shows how to adapt a PSX controller to a PC parallel port.
9 pin Sony Playstation special connector at the deivce, looking at the plug
PSX controllers are intelligent devices that communicate with the console over a synchronous serial bus. The signal wires are shared (tied together) at the console end, except the select line, which is separate for each device.
| Pin | Name | Description |
|---|---|---|
| 1 | DATA | Data |
| 2 | CMD | Command |
| 3 | +7.5V | ≈7.5 V supply (often labelled 9 V) powering the DualShock vibration motors |
| 4 | GND | Ground |
| 5 | VCC | Vcc |
| 6 | ATT | ATT select |
| 7 | CLK | Clock |
| 8 | N/C | Not connected |
| 9 | ACK | Acknowledge |
PSX signals description
- DATA Signal from Controller to PSX. This signal is an 8 bit serial transmission synchronous to the falling edge of clock (That is both the incoming and outgoing signals change on a high to low transition of clock. All the reading of signals is done on the leading edge to allow settling time.)
- COMMAND Signal from PSX to Controller. This signal is the counter part of DATA. It is again an 8 bit serial transmission on the falling edge of clock.
- VCC VCC can vary from 5V down to 3V and the official SONY Controllers will still operate. The controllers outlined here really want 5V. The main board in the PSX also has a surface mount 750mA fuse that will blow if you try to draw to much current through the plug (750mA is for both left, right and memory cards).
- ATT ATT is used to get the attention of the controller. This signal will go low for the duration of a transmission. I have also seen this pin called Select, DTR and Command.
- CLOCK Signal from PSX to Controller. Used to keep units in sync.
- ACK Acknowledge signal from Controller to PSX. This signal should go low for at least one clock period after each 8 bits are sent and ATT is still held low. If the ACK signal does not go low within about 60 us the PSX will then start interogating other devices.
It should also be noted that this is a bus of sorts. This means that the wires are all tied together (except select which is seperate for each device). For the CLK, ATT, and CMD pins this does not matter as the PSX is always the originator. The DATA and ACK pins however can be driven from any one of four devices. To avoid contentions on these lines they are open collectors and can only be driven low. How to connect Playstation joystick to PC ? It is possible to adapt a joystick originally developed for PSX to a PC. After connecting joystick to PC parallel port, you must install a driver so the operating system understands that the device connected is a joystick.
| DB-25 (male) | Via | PSX (9-pin) |
|---|---|---|
| 2 | direct | 2 |
| 3 | direct | 6 |
| 4 | direct | 7 |
| 5, 6, 7, 8, 9 | each through a 1N4148 diode (diode-OR to pin 5) | 5 |
| 10 | direct | 1 |
| 12 | direct | 9 |
| 18, 19 | shorted together in the cable | 4 |
The diodes better to be soldered inside the DB25 connector. Joystick with this cable will work only after manual drivers install.
Notes
- SPI-like bus. Each transfer uses four logic lines: ATT/SEL (active-low select, one per slot), CLK (shift clock from the console), CMD (console → controller) and DATA (controller → console). Bytes are 8 bits, LSB first, with DATA changing on the falling clock edge and the console sampling on the rising edge.
- Open-collector shared bus. DATA and ACK have pull-ups and are only ever driven low, so two controllers and two memory cards can share the same CLK/CMD/DATA/ACK wiring; the console selects one device at a time with its ATT line.
- Polling handshake. The console asserts ATT low and clocks 0x01 then 0x42 (“read buttons”); the controller returns its ID (0x41 = digital, 0x73/0x53 = analogue, 0x23 = NegCon, 0x12 = mouse), then 0x5A, then the button/axis bytes. Buttons are active-low. The controller pulses ACK low after each byte except the last; if no ACK appears within about 100 µs the console treats the slot as empty.
- Clock. The controller bus runs at roughly 250 kHz, and is shared with the memory cards (which use a separate per-slot select and the address byte 0x81 instead of 0x01).
References
- Controller and Memory Card Signals — psx-spx (Nocash PSX specifications) — the serial protocol, open-drain lines, clock rate and ACK timing.
- Controller and Memory-Card port pinouts — psx-spx — the 9-pin connector assignment.
- PlayStation / PlayStation 2 SPI interface — BlueRetro project log — the port as an SPI bus, controller IDs and the read handshake.