Showing posts with label Hack. Show all posts
Showing posts with label Hack. Show all posts

Saturday, September 6, 2014

Hacked up USB for a Phillips HDD1420 GoGear

MP3 players... getting shoved aside by smartphones. A hand me down that spent too much time at the back of a cupboard. Empty battery, no charger, no connector, no memory. How I brought the Phillips HDD1420 back to life!


The first attempt was to power the device via the battery conector only to be greeted with an error message insisting to conect the player to a computer... Tracing the connector I found some suspicous looking traces and soldered a USB cable to it. GND, D+ and D-. Nope... not working, checked the cable and it was defective, swap it for a better one and still nothing...



http://pinouts.ru/PortableDevices/philips_gogear_pinout.shtml

Looking at the information the USB pins I used are correct... maybe it needs the 5V from the USB? Need to probe the board to find a place to solder the 5V to... Bingo! We have communication! Mass storage device detected in Windows... but that's it. No disk drive shows up... Time to go to Phillips' website and find out what is going on. Fortunatly they have the "Phillips Device Manager" software that will reset you device to a working state!

Oh, I't doens't work on Windows 7? Ok, I'll try on an old Notebook running Windows XP...

Oh, I't can't find any devices to fix? If it's mass storage I'll just connect the 4GB Hard Drive Disk to the computer with a card reader (not all card readers support Microdrives, so keep that in mind)...

Oh, I't won't open the drive? I'll try another Microdrive... Yup it works fine...

Turns out the original Hard Drive is dead... Crack on the bottom of the player + non functional hard drive = Previous owner dropped it. OK! Let's replace the Hard Drive with an 8GB Microdrive...

Now windows shows a drive and lets me open it... but still no boot and a nice error message still telling me to connect it to a PC. Oh, and the "Device Manager" still doesn't find a GoGear Player.

Format drive, copy the official firmware to the drive in the correct directory but still not working...

After finding and reading the service manual it states that the technician must replace system files, so it sounds like there is more than just the firmware file...

Time to check if the awesome project RockBox supports the Phillips devices as the last time I checked there was not much support for various players. Of course they had it! Good ol' RockBox!

I used the RockBox installer and the player was booting up fine! Tried the Oficial Firmware and it booted great aswell.

This is where I could remove RockBox from the player and keep the original firmware, but I wanted to use RockBox. The problem was with charging. The GoGear HDD1*** Series come with an external power adapter for charging and the player can also charge over USB at either 100mA or 500mA.
The GoGear has a hardware IC that handles charging and power selection of either External Adapter (AC) or USB power. The IC is the BQ24032 from Texas Instruments. The OF handles the USB charging at either 100mA or 500mA via the control pins on the charger IC. However in the RockBox firmware this is not implemented as it is assumed that you have the external AC adapter.


Now, thanks again to RockBox for providing the schematics of the GoGear player I found a suitable test point for the external power input, a decoupling capacitor very close to the BQ24032 charge IC! Let the software hacking begin!

Now, the GoGear HDD1*** Series are powered by a PP5022B-TFF, This Portal Player System on a Chip (SoC) houses two 32-bit ARM7TDMI processors. It has many more features and is a 261 pin BGA IC. That is a lot of pins, and best of all there is no available documentation for it! To get RockBock running on this platform LOTS of work went into it. Fortunatly with some patience and looking at the source code for RockBox you can get a rought idea of what pin does what... except for the ones that are not used, like the USB charge current select of either 100mA or 500mA...

After much digging around the source code I found out how bits were SET or CLEARED in a pretty safe manner.
Do not change an INPUT to an OUTPUT unless you are sure of what you are doing. You could damage the PortalPlayer IC or the GoGear.
First decide witch GPIO port you want to modify, you can choose from A to L (8bit wide?) or the 32bit wide GPO.
To SET;
    GPIO*_OUTPUT_VAL |= 0xh;
    GPIO*_OUTPUT_EN  |= 0xh;
To CLEAR;
    GPIOB_OUTPUT_VAL &=~0xh;
    GPIOB_OUTPUT_EN  |= 0xh;
Replace * with a letter from A to L
Replace h with a hex value of the pins you want to change.

An IRC user by the nick pamaury suggested PortB and we determined that PortB.5 is the external power detect pin and PortB.2 is USB power detect. Pamaury also suggested PortB.1 based on his dissasembly of the OF as the current control pin ISET2 on the BQ24032 charge IC.

I decided to place the code in the bootloader to start the fast charging as soon as it boots.
Did I mention Rockbox has a Development Ubuntu image for VM's? Download, run, follow instructions!

Open up a terminal and...
-Get rockbox source code;
"git clone git://git.rockbox.org/rockbox ./Desktop/rockbox"
-Go to the rockbox directory;
"cd ./Desktop/rockbox"
-Make a new folder inside the rockbox folder;
"mkdir build"
-Go to the build directory;
"cd build"
-Setup the enviroment;
"../tools/configure"
-enter "101" for Phillips GoGear HDD1630
-enter "N" for Compiling the firmware or "B" for compiling the bootloader.
-Make the RockBox Firmware/Bootloader;
"make" or use "make -j 4" if you have a 4 core processor
-Make a zip if you want to move all of the files easily to the player;
"make zip"
-Extract the zip file to the device, safely extract the device and reboot it!

Now I also did some other tweaks here and there, so lots of transfering the firmware to the player was going on... switching back to windows to copy the files and extract the device was a pain. A little bit of glue and the proces was a simple as running a script!

To share a folder between the virtual machine and windows you will need to instal the Guest Additions CD image from the VM Device menu. Find a tutorial on how to get it running properly. I updated the Ubuntu OS.
Also I used RemoveDrive to set up a BATCH scrip that copied the files to the player and safely removed it from the PC;
copy %~dp0sharedfldr\build\rockbox.mi4 H:\.rockbox /Y
copy %~dp0sharedfldr\bootloader_build\FWImage.ebn H:\System /Y
"%~dp0RemoveDrive.exe" "GoGear"
This BATCH file gets launched from withing the virtual machine via a program called winexe thanks to the following line;
winexe -U user_name%password //192.168.1.100 "C:\Users\OiD-W\Desktop\Ubuntu\copy.bat"
So about 40 lines of code later and I have a little menu that can handle my lazy needs:


After digging around the code I have found the following interesting bits;
The header file for the main processor, pp5020.h, that contains lots of information about the chip.
Some examples of bit/port manipulation in button-hdd1630.c and lcd-hdd1630.c.
Power control code for handling charging is placed in the power-hdd.c file.
And of course the main thread in main.c as a starting point of the program.

For the bootloader there is main-pp.c and that is where I have placed my code for the high speed charging.

I'd like to make a menu option for enabling the charging and some other minor changes here and there. See if I can have a look at a few bugs and generaly mess around with the device. Then see if I can upload the code to the GitHub.

Once the USB pins were found a more robust solution was needed. I placed a mini USB conector from another media player and soldered it the original conector and a large ground pad where one of the screws went. I also used enammeled copper wire for the data signals. Looking back twisting them together wouldn't be a bad idea. The 5V orange wire is multicore and it should handle the 500mA without a problem. Not seen in the photo is a small wire from the GND pin of the USB connector to the chassis GND. This is important because cheap USB cables don't use the connector chassis for GND.

A small notch needed to be cutout from the rubber hard drive support.

And part of the metal chassis also needed to be cut out.

I had choosen to place the USB in its current position because one of the plastic clips that held the player together was broken. Turns out it was no the best of ideas... There is a small gap but that could be fixed by gluing the parts togther. I'll try to find a less permanent solution.
Also to note is the cut bezel of the original conector, a method of securing it is also needed.

Thanks for reading! Happy hacking!

Read More!

Tuesday, July 1, 2014

Mini flash with optical slave


Normally each year around christmas I will be involved in a couple of Secret Santas and one of them is a "all hand made" type where buying the gift is not allowed. Some very creative gifts have showed up!

Turns out I had to come up with something for a photographer... being one myself I know there are many usefull things to make but many are expensive or take a decent amount of time to build.
In comes a mini slave flash with an optical trigger!


Like many projects things don't tend to run to well on schedules so I deadbuged the circuit of a disposable camera flash so it would fit inside the case and have room for the battery (nope, didn't happen!). Here is the circuit diagram for the flash from Sam's repair faq.

http://www.repairfaq.org/sam/strbfaq.htm#strbkd2

In order to squeeze the battery inside of the case everything needed to be small and well laid out. Unfortunatly the transformer is what ultimately stop my from my goal. I had to come up with a small and simple trigger for the flash unit. Provably too simple if used in broad daylight, but i works reliably in bright artificial lighting.


Three components make up the trigger. This conects directly to the trigger pins of the flash circuit.


Here is a side view of the little flash unit.


And another from the back. The beam pattern is maybe a bit too wide but it'll do!


And a size comparison to a comercial flash unit.


So what could it be used for? Small spaces, highlights, inside objects... lots of uses!


The person I gave it too seemed to enjoy it quite a bit. I hope he can find a use for it.

Read More!

Monday, June 30, 2014

Allegro 2917 Dual stepper shield


One day a came across a great find, a HeNe laser scanner/projector , a 2000W stroboscope with a color wheel, a Gobo/disco scanner,  a buch of HP printers and other various electronics.

I recently had aquired an Arduino UNO from cooking hacks and with the abundance of obtained stepper motors I wanted a small platform to easily control them. While disassembling the HP printers I noticed that they had a small IC to controll the motor. After a quick search of the part number I found out that they were dual H-bridge IC (45V 1.5A) with current controllable current limiting.
The project began! I found a template for the Arduino headers and got to work in Eagle. This was my first time using Eagle, and provably my third home made board, please forgive the horrible layout!




Not to mention that I placed many vias under the IC's... I had to make sure that they all made good contact and that they were flush with the board before placing the IC on top.
Solder, check, repeat. The same for the other IC.


 Things were going well, wrote some code in the Arduino IDE. Enable OK, phase OK, PWM... not ok. Motors would spin well with low supply voltages but would stutter with a higher supply voltage.
Re-check everything and find out that the stuttering only happened on one of each phase of each IC so I decided to sapw the chips over. The same behaviour on each phase of each IC. So basically the chips were damaged from the begining :(
For some reason I choose to take the board apart so I could stick it the oven pull the IC's off (pretty hard to do with a 25W soldering iron when 22 pins are part of the heatsink/ground plane).
Turns out the cheap boards I purchased were not FR4 material... well thats the end of that project!



For those that want the files they can find them here in Eagle's format.




Read More!

Wednesday, June 25, 2014

About a PS3


So my mother bought a PS3 in 2006 or 2007 because it was the cheapest Blu-Ray player on the market. Of course if there is a way to run code on it I'm in!

The chosen path was a PSGroove based around the PIC18F2550 (My first microcontroller with native USB!) and here you can see how simple is is (and what a waste of a PIC!).




So why even post about a 2007 PS3 hack? Well, I only have 3 games for it and only one of them gets played (Trinity Universe). Now, I really dislike loading times, so I have a copy and play it from the internal hard drive. All is great up until now as the PS3 was upgraded from 3.41 to 3.70 (most likely a Blu-ray movie) so the solution is invasive surgery (direct NAND manipulation)!!

After poking around the net I found it is possible to reflash the internal memory of the PS3 so that is something I would like to do (plus it's an exscuse to delve into the console) but I do not want to buy a special flash tool.

It can be done with a cheap Teensy++ 2.0 so that got me thinking a bit. After looking around on many forums there don't seem to be many options for DIY tools. Either the Teensy++ 2.0 or Progskeet or other more expensive tools or kits. Of course I could buy a teensy but I don't like the idea of spending money on a relativly low end and slow board. I already have an Arduino Uno and various PIC boards.

I am assuming that the lack of other DIY tools is due to the programming involved with the microcontroller. Therefore after looking into some of the code used and chip timmings I believe it would be a great experience to "port" or write new code for a developing board that interest me.

Something nice and fast with plenty of I/O and a host of features yet cheap and easy to use in projects. 30€, 48IO, USB host, 70Mhz and up... Well... thats for another time. I have other projects to get done first and learning how to properly handle flash memory, USB connections and data managment.

In the meantime I'll just have to deal with the loading times and search for a nice development board!

Here is a photo of my previous P16PRO programmer before getting a wonderful pickit2 :)

Read More!

Monday, August 13, 2012

Studio strobe power hack.

Hello again everyone. Today I shall share a usefull hack for cheap photographers like me. Story time; I bought a couple of monoblocks on eBay a couple of years ago, and after lots of thinking I settled with the Godox Mini Pioneer 300DI. Why? Because two of them cost me 270€. With shipping. So, what is the catch? They are pretty close to 300W/s. They do work. But the power control is miserable. 1/3 to full power... not what is advertised!

Last year I added a switch and some diodes but that didn't work too well, especially when I accidentaly flipped the switch with one bank of capacitors fully charged and the other bank pretty empty... result? A very strong weld inside the switch. Lets begin!




Here is the circuit diagram, pretty simple. Two 3A diodes are responsible for the capacitor charging and blocking revers current flow. A larger 60A diode with a surge rating of 950A is used for blocking the charge from one bank to the other and allows the bank to discharge into the flash tube. The strobe has a 10A/300A diode in series with the flash tube but I think that it might be pushing it so I used what I had on hand.


Please be carefull as there are high voltages and juicy capacitors inside. If you don't know the dangers then I suggest you don't do this.br />




Please ignore the yellow wiring and the power resistor. That is my old hack.




This is the flash end of the strobe, to take it apart we need to desolder the four wires and disconect the trigger coil.




The boar can then slide out the back, here are the conectors for tha back panel and their names.


The front end desoldered.


The hollow case.


The top control board. From left to right and top to bottom;
Sync terminal. "Isolated" with an optocoupler but the negative part of the IRLED is conected to mains with a resistor. So much for bein isolated... I do not recomend using these strobes with a PC cable.
Discharge diode. Used to double the tube voltage when firing. Page 5 of this document.
BTA16 Triac. Used for the modeling lamp tracking.
PIC12C508A. Sole purpose is for pre-flash control.
12v Zener diode to power stuff.
Buzzer and buzzer switch terminal, I cut the link to remove the anoying beep.
TL7805 voltage regulator.
BTA20 Triac. Provably to control the charging circuit.


Capacitor bank and provably a voltage doubling circuit. 7 800uF caps rated at 360V.
A total of 5600uF charged to 330V gives 304Joules.

Underside of control board. A small SH69P86 micro controller is provably responsible for all of the functions. Wich aren't many.


Underside of the capacitor bank. Again, please ignore my awefull hack.


As you can see, the track width is very small on this trace. Especially when it's the discharge path for the flash... Scrape away and apply some solder to help things a bit!


Onto the hack! First I removed my hideos hack and bridged it. Then I cut the track as to separet the bank into two banks of 2 and 5 caps (do as you wish here). And finally at the rightmost part I cut the trace from the charge circuit.


Here I placed the charging diode for the small bank.
Important note! You must place a resistor to the same place as the diode because the diode blocks the reverse voltage and the charge control will not know if it is charged or not! Mine simply didn't charge above 150v, some might continue.


I used a 4.7k resistor as it only draws 300uA. Values up to 100k work but the charge voltage goes up to 350V wich for cheap 360V caps is provably not the best idea. But hey if you want more power now you know!


Edit; Here is a picture from my other strobe of the resistor in place.


Here I have placed the switch, the second 3A diode, the powerful 950A surge diode and I have conected the main board again.


Important detail! The ground wire is conected to one of the scews, don't forget it.


Reconecting the flash head.


Back into the housing. This is where I soldered the 4.7k resistor, on top of the diode. I had to be carefull not to melt the wires. Yeah, I'm lazy.

New switch, uppside down but that can be fixed.

It lives!!

Now for some numbers with my trusty L-358!
The difference between low power and high power with the small capacitor bank is 2.2 f stops.
The difference between low power and high power with all the capacitors is 2.4 f stops.
The difference between 7 and 2 capacitors on low power is 1.5 f stops.
The difference between 7 and 2 capacitors on high power is 1.5 f stops.
The difference between low power with 2 caps and hig power with 7 caps is 3.7 f stops.

When I get hold of some more 3A diodes I will modify my other light!

Happy hacking!


Oh, and if you got this far, check out my photos as many studio shots are taken with these.
http://www.flickr.com/photos/oid-w/

Read More!