PDA

View Full Version : No MOD PSP Keyboard, Mouse, Joystick



wraggster
September 18th, 2008, 21:45
gr8npwrfl (http://forums.ps2dev.org/viewtopic.php?t=11001) has posted some exceedingly interesting news:


Well here is the proof of concept you have been waiting for

This is the prototype USB Host to serial interface

http://mysite.verizon.net/restxsa0/Serial.jpg


This is a AT90USB1287 chip from Atmel. IT has not only a
standard USB device interface but it has the USB Host
interface.

This is their prototype board that sells for $34.00 and
is ready to run as it comes from Digikey, Mouser, or
Arrow.

I placed it in a box to make it easier to handle as the
entire proto board is only 3 inches by 1 inch.

The two connectors on the front of the board allow me to
plug in cables. One to the PSP and another to a RS232
converter so I can send data to the PC.

I currently have completed the USB mouse driver and a
USB Keyboard driver. I am currently debugging the gamepad
drivers for the XBOX 360 wireless gamepad, the PS2/PS3
wireless gamepad, and the Logitech Wingman wireless gamepad.

All of the interfaces require the installation of Pikey
onto your PSP.

THERE ARE NO HARDWARE MODS TO THE PSP AT ALL!

IT works on both the Phat and the Slim

Here is a picture of the cables that I have made up to
work with the PSP Phat.

http://mysite.verizon.net/restxsa0/Serial-Cables.jpg


Again there are no hardware mods to anything. The keyboard,
mouse, joysticks are stock USB devices. That means when you are
not using them with your PSP you can use them other places.

I am working on the Pikey software to make the key mapping work
with my system. The external keyboard or gamepads will be able
to map to ANY PSP internal button or joystick. You will be able
to have multiple mapping files, one for each game of your choice
and map the buttons/sticks any way you want.

Enough talk, here is a video showing the system in action. The
final design will not have a battery, I am putting together a
2.5/1.8 volt to 5 volt converter so everything is powered from
the PSP.

http://www.youtube.com/v/rGGgBuRJFeg

Now that you have seen it, I will also say that yes I have tested
a USB hard drive on this interface and can we say Sloooooooooooow.

It was never intended to do hard drives through the serial port
anyway, but I did it to say yes it can be done. Besides I had the
driver code for a mass storage device.

The interface for an internal versions the one square chip in
the middle of the board and a crystal. Small enough to put inside
the PSP WITHOUT taking out your UMD drive.

Also the device comes with a boot loader that allows the chip
to be flash programmed from your PC without a jtag device.
How is that for cool !!!

You can embed the chip in your PSP and then plug in a cable that
will connect to the PC and program the memory in it. So as we
come up with more drivers and software all I will have to do
is the same we do for a PSP, post the files and program your
device.

By the way, this chip also has 38 more unsused pins on it.
Any of the pins can be programed to do other functions like
control LEDs or other things inside the PSP and then could
be controlled by the keyboard, mouse, or gamepad. Some of the
extra inputs are A/D converters and I was thinking since we
are already plugged into the headphone/serial plug, it might
be nice to do an amp in the external box with a computer
controlled sub woofer .......

All of the code for this and further devices built on it will
be open source. It is all written in commented "C" code so you
can modify it to your hearts desire. The Atmel development
system is FREE and includes the "C" compiler. It is a integrated
development system with a simulator so you can build your code,
simulate it to debug and then plug in the AT90USB1287 chip
and program it.


If you want a real leg up with working with the AT90USB familly processors then you need to go to MyUSB. It gives you a fully functional USB host stack for these processors.

All my code is built on these as a base. There are fully functional demos of several HID devices as well as mass storage devices. They also have a software development board to help you with developing your own USB applications.

Between this board and the standard documentation on USB device drivers you can start writing your own drivers for USB devices.

Another hint, if you want to write a device driver for something there is not a driver for then check out to see if there is a driver for it in the linux community. You can use it as a template to develop your own driver around and make your life much simpler.

With these resources, even if you have never written a device driver you are well on your way.

MyUSB support list:

http://groups.google.com/group/myusb-support-list

AT90USB developers forum:

http://www.avrfreaks.net/

There are two approaches to using an external processor through the serial port.

1. Interface to the USB device and send the raw data in the serial port
and interface to the data on the PSP side.

2. Interface to the USB device, process and configure the data and send
only the results to the PSP.

Since I am sending my keyboard data to Pikey on the PSP side, I did not want to modify that software and put more overhead on the PSP which can cause other side effects and problems.

My keyboard interface reads the USB scan codes from the keyboard and then in flash memory I maintain the translation table to Ascii. The only app that I am writing for the PSP is to be able to send custom translation
tables to be stored in the remote cpu flash.

Also like remotejoy that allowed the gamepad to be mapped to keyboard keys, I am interfacing the external gamepads to the keyboard translation table so you can have button reassignment to your hearts content.

All the burden and overhead does not consume resources on the PSP and does not slow down the system.

After the keyboard and gamepad is done, I have so much more power left in the external cpu I was thinking about taking two of the A/D converters and building a frequency discriminator so I can build a micro based sub woofer amp for the speaker output that is already being sent to my interface.

Awesome news

NoQuarter
September 19th, 2008, 01:41
Looks promising, maybe a purchase in my future.

indstr
September 19th, 2008, 03:54
That is fantastic! As soon as I can nab one of these on mouser, I will hit this guy's usergroup up for instructions on how to build the interface cable to the remote port.. Is he planning on publicly releasing the drivers soon?

I have been waiting for this for a long time! IRkeyboard was neat to mess with, but the latency time makes it too slow for gaming. But this will be amazing to use with DOSbox!

Conceivably, drivers could be written for all kinds of input devices - PSX controllers (via usb adapter), motion sensing controllers, trackballs, joysticks, etc. Possibly even one of those dual keyboard/mouse adapters, so you could use both a keyboard and mouse at the same time to play a first person shooter? :-D

yakumo
September 19th, 2008, 06:20
Looking forward it. But It would nice that could have the possibility of an AC adaptor.

gr8npwrfl
September 19th, 2008, 06:47
You can use any wall mount transformer from 6.5 to 10 volts dc 500 ma and use that in place of the battery if you want.

I am building a 2.5/1.85 volt to 5 volt converter so the entire system runs from the power of the PSP.

The one restriction with this chip is that it is USB OTG host. So you can only support one USB device at a time and you can not use a USB hub.

What do you want for a $10 chip LOL ?

A very complex driver will only take up about 1 to 1.5k because you do not have the OS system overhead to deal with.

All gamepads output a switch mapping table, my driver only has to recognize what device is plugged
in and then build that table in memory. When a value in that table changes I go to a cross map that determines the ascii value to send down the line. So that way any button on the gamepad can map to any button on the keyboard that is mapped to any internal PSP button ( This includes the joysticks )

Fairly straight forward, just takes a little time to work out all the mapping. That is what I am debugging right now.

I am going to setup a repository for drivers on this platform at sourceforge.net so we can keep building a library of devices we can interface to.

By the way with all the extra A/D converters on the chip we can take the left and right audio
and feed it into the cpu and do frequency descrimination to create a cpu based sub woofer. This can be fed into an amp and used to trigger the rumble mode of the controllers.

Do you know I have the driver done to talk to a usb cell phone ? The PSP can make phone calls LOL.
It is just another serial device.

dangee
September 19th, 2008, 10:39
This raises the potential of the PSP so
far that it's a mystery why Sony
never put something similar on the motherboard.

good luck with the project gr8npwrfl

Does this mean that USB memsticks can be accessed ?

indstr
September 19th, 2008, 12:53
The one restriction with this chip is that it is USB OTG host. So you can only support one USB device at a time and you can not use a USB hub.


So... It wouldn't work with one of these?
http://www.canadiancomputerstore.com/images/USB%20to%20PS2.jpg

If not, I guess I'll have to use my trusty Maxx shooter adapter, which turns a PS2 (computer type) mouse/keyboard into a PS2 (game) controller signal
http://www.mayflash.com/maxshooter/max%20ps2/images/2-2.jpg

Then I can definitely be rocking some Quake :D

Akoi Meexx
September 19th, 2008, 15:01
Looks promising, maybe a purchase in my future.

Likewise. This would be pretty cool to make for average users if there were a simplified process though (Duh).

I'd definitely have to Quake it up with this.

indstr
September 19th, 2008, 15:54
Likewise. This would be pretty cool to make for average users if there were a simplified process though (Duh).

I'd definitely have to Quake it up with this.

This looks to be an inherently not-simple process.. You have to buy the microcontroller, put it in a project box (if you want it to look pretty and not get damaged), manually flash the drivers to it (which in the video he says can be done via USB, which will make this A LOT more accessible for the average user), and then most likely solder your own cable to connect the microcontroller to the PSP's remote port. Still, it shouldn't be too hard as long as gr8npwrfl can post some tutorials/readme's along with the driver releases.

And of course, if he was enterprising enough, I'm sure he could sell pre-flashed pre-cabled ones to willing buyers who are not tech savy enough or too lazy to make their own. :)

guymelef
September 20th, 2008, 00:07
Proof of concept my ass.

This thing is good to go as is for some apps.

Things like this is why I say that the PSP homebrew scene is above and beyond most of the other scenes.

Why not replace simple laptop functions such as word processing and email with a PSP? A fraction of the size, power and weight, I'll be leaving my laptop at home next time I go to class. well as soon as a better text editor is worked on.

kohan69
September 20th, 2008, 23:54
hell effin yea!!!!

"I have so much more power left in the external cpu I was thinking about taking two of the A/D converters and building a frequency discriminator so I can build a micro based sub woofer amp for the speaker output that is already being sent to my interface."
or a RUMBLE PACK!!!!!!

BaileyBoy54
September 22nd, 2008, 07:55
Wow thats rather cool

indstr
September 22nd, 2008, 17:18
Too bad I am too poor to buy the microcontroller right now :( Maybe I should sell my targus IR keyboard to gather funds

NeoTechni
September 2nd, 2009, 19:19
So, has this guy ever posted the completed program?