Where do I get DualShock pinout and specs?

Discuss the development of software, tools, libraries and anything else that helps make ps2dev happen.

Moderators: cheriff, Herben

Post Reply
foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

Where do I get DualShock pinout and specs?

Post by foofoo »

Hi there,

I want to use my DualShock 2 as remote control
to my airplane models and I need port pinout and
signals specification for that.

Where can I get the documentation?
Is it available somewhere?

Thanks for any help.

foofoo at wp.pl
Waruwaru
Posts: 15
Joined: Sun Aug 01, 2004 5:42 am

Post by Waruwaru »

Found something interesting here. Maybe that will lead you somewhere useful. Either that, or reverse engineer it. :)

Ooo, and the PSX DualShock USB adapter might be a good place to start too.[/url]
fluke
Posts: 25
Joined: Mon Jul 26, 2004 7:00 am

Post by fluke »

foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

What about DualShock2?

Post by foofoo »

fluke wrote:Information is available at:
http://www.epanorama.net/documents/joys ... games.html
Thanks, guys, this is very helpful. However, the information
I found is about PSX controller (and it seems pretty old).
I dont know if DualShock 2 is compatible with PSX controller,
but it has more features, not only analog joysticks but also
analog buttons (circle, square, triangle, cross), right?
I surly has more information in data frame.
And what about "analogue green" or "red" mode?
"Red" mode is while analogue red diod on DualShock2 is lit on
and "green" mode is while the diod is dim?

Well, I think that initial handshake should be the same
for DualShock2 as for older PSX controllers, so it is possible
to hack the data byte meanings by displaying them somewhere
in real-time... but I want to avoid that...
Is there some first party Sony tech docs site for developers?

Foofoo at wp.pl
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

PS2 controllers are compatible with the older PS1 protocol. You just don't get pressure values for the buttons. You can use PS2 controllers with PS1 interfaces and they work exactly the same as a PS1 dual-shock controller.
foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

Post by foofoo »

J.F. wrote:PS2 controllers are compatible with the older PS1 protocol. You just don't get pressure values for the buttons. You can use PS2 controllers with PS1 interfaces and they work exactly the same as a PS1 dual-shock controller.
Thanks... I read previous topic titled 'IR gamepad'. You mentioned
there that transmitting baud rate is 250 KB/s (this is 2 Mbps!!!).
I dont need such speed, in fact I need to receive one controller data
frame every 20 ms only. Since the communication is synchronous and we give clock signal to controller, I may use as slow clock as I need...
For 9600 bps (its enough for even longest frame to transmit
in 20 ms) clock frequency is 9600 Hz... Is that right or am I wrong?

greets,
F
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

No, I said "The serial runs at 250 KBaud." KBaud is kilo-bits per second. The PS1/2 controllers expect something close to this. Some will not respond if you get too far from that baud rate. What you want to do is send/receive the packet at 250 kbps, then wait however much time until the next polling interval. This should be pretty easy for today's programmable chips like the PIC or Xenix. You know the clock rate the chip will run at, so make a hardcoded routine that clocks the bits out and in at the proper rate. Use a timer to keep track of the 20 ms polling interval.
Neovanglist
Site Admin
Posts: 72
Joined: Sat May 22, 2004 9:29 pm
Location: Copenhagen, Denmark
Contact:

Post by Neovanglist »

Hey there, I did some reverse engineering on this a while back to use my simple PS2->USB pad adapter. The stream is just a serial stream, and I reversed it ages ago. I never thought it would be of any use, but if you can use it then go for it.

http://melchior.neovanglist.net:8080/PS2-USB-Protocol
http://melchior.neovanglist.net:8080/PS2-USB-Diag.png
http://melchior.neovanglist.net:8080/PS2-USB-Diag.c

Let me know how it goes!

--
Thanks,
Neovanglist
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

That same info and much more is already better documented on some of the links given above. Thanks anyway.
foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

Post by foofoo »

Neovanglist wrote: Let me know how it goes!
Thanks, I will take a look at the links later, at the moment port 8080
is not available to me.

I experience some difficulties with this little project.
After byte transmission Dualshock
ACK line goes low (except from the very last frame byte).
Should I wait until ACK goes high again to start next
byte transmission? By 'wait' I mean no clock ticking
(it looks like in time diagrams...).
What is a timeout for ACK to go low
after byte last bit (is it 60 us)?

I also implemented initial test of DATA and ACK lines
(because from time diagrams it looks like they should
be initially high). But DATA line is not initially high.

And ATTENTION line... can I just wire it to ground
to have constant Dualshock attention?

When I put only +5V an ground to Dualshock
(rest of the lines floating), I can switch Analog button
and red diod is on for a while. When I put attention line low,
the Analog button 'does not work' (the diod is never lighted).
Is it OK?
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

foofoo wrote: After byte transmission Dualshock ACK line goes low (except from the very last frame byte). Should I wait until ACK goes high again to start next byte transmission? By 'wait' I mean no clock ticking (it looks like in time diagrams...).
You should.
What is a timeout for ACK to go low after byte last bit (is it 60 us)?
That's how long the PSX waits for an ack before timing out and assuming the packet is done. Since Sony is the authority, You can safely rely on that yourself.
I also implemented initial test of DATA and ACK lines (because from time diagrams it looks like they should be initially high). But DATA line is not initially high.
By what standards? 5V? Remember that data signals are rarely higher than 2V for a high signal. My interfaces receive FF as the first byte, so the controller IS pulling the line high by logic standards.
And ATTENTION line... can I just wire it to ground to have constant Dualshock attention?
Not if I remember correctly. The various controllers are sensitive to how long after the attention line is lowered to when they expect a command to actually start. After a packet is complete, a new one can't start until the attention line goes from high to low again, and it can't do that if it's pulled low.
When I put only +5V an ground to Dualshock (rest of the lines floating), I can switch Analog button and red diod is on for a while. When I put attention line low, the Analog button 'does not work' (the diod is never lighted). Is it OK?
Sounds like you aren't sending proper command packets. The data you send the controller is as important as the data you receive. The timing is also important. I had variables on controlling the timing for how long before starting a packet and for the cell timing. You need to play with it a bit.

This page is decent on showing the PSX interface.

http://www.gamesx.com/controldata/psxcont/psxcont.htm
foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

Post by foofoo »

J.F. wrote:By what standards? 5V? Remember that data signals are rarely higher than 2V for a high signal. My interfaces receive FF as the first byte, so the controller IS pulling the line high by logic standards.
So, will Dualshock give me standard TTL 2.4 V for logical '1'
with +5V supply voltage?
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

It should. It has a logic signal compatible with most computer parallel port interface chips. Like the 8255 (or equivalent) on the PC, or the 8520 on the Amiga. You shouldn't have any trouble connecting directly with it using most microcontroller chips. Look at the schematics for the interfaces in the links at the start of the thread.
foofoo
Posts: 6
Joined: Wed Aug 11, 2004 11:47 pm
Location: Poland

It works!

Post by foofoo »

Finally, I did it. It works. Thanks, J.F.!
splynncryth
Posts: 16
Joined: Fri Apr 01, 2005 2:03 pm

Post by splynncryth »

Is there any data out there specifically for dualshock 2? I'm working on a 'swiss army' USB interface for various console controllers. The current version supports basic NES and SNES controllers. Next I want to add n64, PS1 and PS2 support. Full support for the base model PS2 controllers means supporting pressure sensative buttons. Does anyone know how this changes the frame?
I'd also like to know if there i a list of commands, like the commands to run the vibration motors, and the commands to force analog mode?
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

Me and Andrew Sobotka had an exchange on some data dumps he was doing on a dual shock. Here's a little preliminary info we have derived so far.

Code: Select all

01 43 00 01 00 is pretty obviously switch to program mode
...
01 43 00 00 00 is switch back to report mode

You do commands in program mode and read controller input in report mode.


This is done pretty much anytime a controller changes, whether it's mode or is hotplugged. It probably reads the controller capabilities and status:

01 45 00
01 46 00 00
01 46 00 01
01 47 00 00
01 4c 00 00
01 4c 00 01

This usually follows the above and seems to be something like a restart command:

01 4d 00
01 41 00  this is a general DONE signal as you will see


The mode is changed via this command

01 44 00 01 00  change to analog mode
01 44 00 01 03  change to analog pressure-sensitive mode

I would guess that 00 00 00 is digital joypad mode.

It is usually done after reading the controller caps and before the general restart.


This is done after switching to pressure sensitive mode:

01 4f 00       set controller button modes
01 40 00 bb mm set button bb to mode mm
...
01 41 00       DONE

If you look at the dumps, you'll see that everytime you set the controller to ps mode, it sets buttons 00 - 0b to 02.
Once in pressure sensitive mode, you get the standard dual-analog return plus twelve extra bytes of pressure data.

Hope this helps. There just isn't any info from Sony on it, so it's just whatever people can work out from messing with actual controllers.
cory1492
Posts: 216
Joined: Fri Dec 10, 2004 1:49 pm

Post by cory1492 »

My troll of april:
Uhmm, isnt the PS2 Dual Shock controller essentially an ILLEGAL product from... dooh Sony?
Guest

Post by Guest »

cory1492 wrote:My troll of april:
Uhmm, isnt the PS2 Dual Shock controller essentially an ILLEGAL product from... dooh Sony?
It is illegal for Sony to sell per the court ruling (though they can still sell it during appeal).

However, I do not think the court rulings affect what private individuals can do with the ones they already purchased. Any fine that Sony pays and any possible resulting agreement with the patent owner is likely to cover all pre-existing dual shocks.

So dev away!
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

Sony has posted a bond and the judge suspended the injunction until the appeal is heard, so Sony can legally sell the PS2 and dual-shock and games which use it.

Technically speaking, a company holding a PATENT can go after customers of a competing product which infringes said patent. You could be required to return the product or pay an additional fee to use said product, even though you bought it from the other company in good faith. It's one of the more powerful aspects of patents in the US. It's also one reason why patents are so often the focus of abuse - they give you more power over a company and its customers.
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

Just an update... [RO]man is back! His new address is

http://ps2dev.ps2-scene.org/

He has a nice PS2 controller spec file on his site... so if you're interested in the PS2 controllers, go check it out!
Post Reply