HOME ARTICLES DOWNLOADS CONTACT


Openschemes Feed
Main Menu
Openschemes Articles
Categories
Site Sponsors
Site Hits
Total Hits


Abusing the SPMP8000 via serial port - Part I

QRCode


Tags: , , , , , ,

Filed under: MP5 | January 12, 2010 @ 8:30 am (Views: 488)

As you may have read in our first article about SPMP8000 hacking, this PMP has an easily-accessed serial port on the mainboard.  To better get to know your PMP and to jumpstart your own development efforts, you will want to get serial port access.

Through the serial port you can monitor startup messages and other interesting text.  But the real fun comes to those with quick fingers: By interrupting the boot sequence you can drop right into the RedBoot shell and begin uploading and debugging software in just a few minutes.

We’ll first cover installation of some serial port extensions, then a short overview of what can be done when you’re attached to the port.

Installation: Honestly, the only thing that needs to be done is to connect to the TxD and RxD pads on the PCB.  We started out with two pins from an old DIP socket just soldered to the pads.  This worked fine but required the cover to be off, which slightly complicated entering ISP mode by holding UP (The UP key was not there - it was a bare PCB, man!).

So our suggestion is to cut a new hole in the case of the device and solder a little extension from the PCB pads to a socket that can be accessed via this new hole.  In our case, we cut the hole at the top between the headphone and AV ports and used more DIP socket pins as a cheapo connector.

Photo of the PCB with serial port extension

Fig 1 - SPMP8000a Serial Port extension (Green wires) Note that the battery was removed for clarity and normally would cover these wires. 


We don’t suggest removing the battery unless you have to - the soft-pack Lipo battery could be punctured and in the very worst case, cause a fire.  But for the sake of clarity we took the risk and moved the battery for the above pic.

You can put your own serial port extension on the bottom, top, side, or even drill through the metal back case and come directly in.  It shouldn’t matter.  What WOULD matter is the grounding of the port.  The PMP GND (battery black or USB shield) needs to be on the same GND as the port it’s talking to or you will get junk and noisy comms.  In our case, we will have the PMP connected to a PC via USB and we will access the serial port via a RS-232 to USB connector so the grounds are both the same USB shell (PC GND).  But if this is not your setup you may need to add a GND wire to your connector.

We’ve used two USB->serial converters to access this PMP: A sparkfun FTDI232 board and a cheap PL-2303 based USB->serial device that we opened up and accessed the RxD, TxD pins.  Either way, we can say that 3.3v RS232 works fine.  DO NOT connect this device directly to your PC’s serial port.  That port is -12v, +12v and will surely blow up the UART on the SPMP8000.  You’d be screwed at that point and would have to resort to using the device for it’s intended purpose.  Oh no!

Photo of MP5 serial port accessed with FT232

Fig 2 - New port being abused by FT232


Now we’re sure that if you understood that you want to access a serial port and are able to disassemble your PMP and solder one on, you are probably smart enough to know that you should also connect to it.  BUT IF NOT, we’ve included Fig 2 anyway to show you that for our testing, the port worked best when we connected to it.  115.2k, 8n1 and flow  control OFF if it’s an option.

Before we get into the RedBoot shell overview, let’s take a quick look at a picture of a tiny linbox pwning the even tinier PMP via minicom.  dump -b 0×00 -l 0×0FFFFFF.  Basically a stickup: “Give me everything, smaller system!”.  The big eat the small, that’s the way it goes.  You can’t enjoy the fact that the ram dump has been scrolling for a half hour now and has plenty more to go.  But you can enjoy the sight of a cheap USB->Serial port (Prolific PL-2303 chipset, $5) that was ripped open during the wifi hacks and is now reborn as a 3.3v serial port for interfacing the PMP.


Photo of the linbox pwning RedBoot via minicom

Fig 3 - Tiny linbox pwning even tinier PMP.  Minicom vs RedBoot - Minicom won.

At this point, we’ll assume that you have your connections to the serial port pads sorted.  The next part of the article talks about what the heck this all gets you, other than the satisfaction of another disassembled toy.  Continue on to page 2 to read the gory details.


Continued on Next Page…        Jump to Page 2  

Bookmark and Share

Pages: 1 2


Related Posts:
  • Nandoori - SPMP8k Raw USB NAND Dumper (February 16, 2010)
  • SPMP8k FRMorp v1.1 - Improved the Linux side (February 9, 2010)
  • SPMP8k FRMorp - USB IMG dumper (February 8, 2010)
  • SPMP8k Serial Port Pinout (February 4, 2010)
  • Building SPMP8k OS Images. (January 30, 2010)

  • Metadata:

    6 Comments

    1. Comment by Jhogo:

      Hey guys ,I bought one of those on Dealextreme and it stoped working , the select button don´t work anymore ,just the arrows and the analog works

      What can I do? I tried to format the device but i couldn´t , it appears to be corrupted!!!

    2. Comment by openschemes:

      if the select button stopped working because of playing it then it sounds like a mechanical issue. It would not be difficult to replace the little switch with another one if that switch went bad, but you must be very handy with soldering.

      If the button stopped working because you installed some other firmware that is not for your device, then you will need to get your original firmware (no, we don’t have it) and reflash your device.

      As far as formatting: Over USB, you are only allowed access to part of the flash drive that contains a FAT32 partition. This partition does not contain firmware or anything else that is critical for the operation of the device. We can’t say if your device is corrupted or not, but nothing you do to the Mass Storage side can harm the actual firmware on this 8000-series device.

    3. Comment by Marius:

      I got 2 of these from eBay , they are advertised as 4.3 PSP , MP5 or something like that. They sell for about 50$ , free shipping included.
      I actually opened one up and managed to get the serial comm. working before reading this article.
      I’m interested in hacking this as well so I’m looking forward to reading you next posts.
      Also, I used a (cloned) Nokia serial cable for a 3310 to connect to the device. I think it’s the easiest way and had it around anyway.
      Keep in touch .

    4. Comment by Jhogo:

      Hi, thanks for the quick reply!
      So ,I´m not sure when the problem started , I really dont remember if it happen when i tried to format or when i was transfering some large data to the device …

      Trying to fix it , I tryed to format the flash mem several times ,using different softwares ,main prompt ,but it always show a message saying that it was not possible to format the device.

      I never tried to change the firmware ,i was thinking ,maybe the main flash is corrupted? If that can be the problem ,I can fix it?

      The button works fine to turn on the device ,but dont works when is on the menu.

      Thank´s very much for the help!

    5. Comment by openschemes:

      Marius: Nice work, keep checking back and we’ll soon have some new updates for you.

      Jhogo: If the button works on startup then I agree that it’s fine. It’s really starting to sound like a firmware issue. I don’t know if you want to open up your device but the PCB should have a marking on it like 999_V21. By using that code, you can try to find your firmware online in order to fix it.

    6. Comment by Reed:

      I have a JXD 921 and it has the same SPMP8000A chip. I’ve soldered 3 wires to where I think TX, RX, and GND are located (they aren’t labelled as on your board). I can receive serial data fine and see all the same startup text as you do. The problem is I can’t send the ctrl-c to get to the RedBoot console. In fact when I plug both TX and RX wires into my serial port I can’t even turn the PMP on or off. All I get is an error “UartReadRx failed. invalid ret len” in my HyperTerminal. So I can only connect the RX and GND and get the startup text. I’m using an Arduino as a serial to USB converter. It works fine in HyperTerminal without hooking it up to the PMP but as soon as I hook up both TX and RX wires I get that error.

      Great articles. I’m really enjoying the learning process in trying to hack a portable device.

    Leave a comment





    Contact Openschemes


    Copyright © 2003 by Openschemes  |   |  Design by 7dana.com