Pi in a Gameboy Advance Build - WIP
A "USB current tester" ... I didn't know such a thing like this existed...but I need one now!!
I'm also going to get a female JST connector and connect it to a female USB plug so I can test current draw directly from a LiPo.
It looks like I broke something.
Today I decided to desolder the speaker leads, put the ferrite beads on, and test things out to see if the "hiss" was reduced. I can't really tell how much it was reduced, but unless I put my ear right next to the speaker, I can't hear it, so that's good.
So, what did I break? Well, I think I fried something, either in the Pi, or the iBuffalo controller, or both. I'd been using an iBuffalo controller hooked up via USB to do testing and when I powered things up to test the speaker, it wasn't detected.
lsusbdidn't show it, nothing.
Since I was maxing things out and was getting the blinking power LED on the Pi I figured I fried something in the USB circuit, but it couldn't be everything, as the USB sound card still showed up. I removed the hot glue at the Pi and retouched the solder points, then I tested continuity from the plug back to the Pi, all good. Then since things still weren't working, I made sure I was getting 5V at the plug, I was. Then I took an old USB drive and plugged it in. It worked.
Then I got an old Gravis Gamepad Pro and plugged it in. It worked. Weird. Then, just for the heck of it, I plugged a USB hub (not powered) into the USB port, and then plugged the iBuffalo into that. The iBuffalo worked. I don't know why, but it will work through a hub, but not directly plugged into the Pi.
I then tested the iBuffalo directly plugged into my test Pi Zero, and it works there, and it also works plugged into my laptop. I'm not sure what's up, but I'm mad at myself for breaking whatever went wrong. I guess when you push the envelope, you're going to break parts.
I'm not sure what I'll ultimately end up doing with this build regarding having an exposed USB port, but at least for now I still have ways to test before I get the buttons in the shell.
I don't know why, but it will work through a hub, but not directly plugged into the Pi.
That is odd, I wonder if the solder joints are too close together?
@backstander yet other devices work when directly plugged in. So weird. I'm not going to let it derail the project. I'm more mad at myself for frying something.
@obsidianspider Could the ferrite beads be causing anything? It is very odd!
@moosepr Nope, because the controller not working happened before the ferrite beads were introduced into the picture. My initial intent was to just try hooking up the tiny piezo speaker by touching the leads to the amp, but when the controller didn't work, plans changed.
To try to figure out what the heck was going on, I Googled around, as one does, and saw that one suggestion for a device not working on one computer, but working on others was that maybe drivers were messed up. I took my spare SD card, put a fresh image of retropie on it, popped it in my Pi 2, and the iBuffalo worked directly plugged into the Pi 2. I added the necessary framebuffer stuff to get the display to output to the TFT, then took the card out and put it in the GBA Pi 3, with the iBuffalo plugged in. No controllers detected message from EmulationStation. I plugged in my Gravis Gamepad Pro, it worked. I plugged in a USB drive, it worked. I plugged in a keyboard, it worked. Even though this Pi obviously has something up with it, I plugged in my "good" Raphnet-converted SFC controller, it worked. It's just that one controller on that one Pi. So bizarre.
The next thing I really need to do is to get some small glass jars so I can make some ABS cement and finally tackle the case mod. The power circuit is on hold until Camble has more safe shutdown boards for sale, or I figure something else out, and I can't fit audio components all in the case until I get it modded for ABXY.
I could buy another Pi 3, cut it down, hope I don't mess it up, and go again, but considering I don't even know if this USB port will be hooked up/exposed, I don't know that I want to go through that effort, especially since other USB devices do work.
@obsidianspider that is really weird! The controller works in another pi, and the USB works for other devices! In assuming you are just using the controller for testing? Will it be used in the final build?
@moosepr Yeah, it is weird. Now I'm wondering what broke. I'm almost positive that it was during the stress testing, but what weird was that the controller worked fine during the test, and even yesterday after a few reboots. I was using it for testing as I like the SNES controller form factor, and since it's a dodgy cut up Pi, if I did break something I didn't want to break my "good" Raphnet controller. The Pi also recognizes the iBuffalo controller if I plug it into a hub, and plug the hub into the Pi. So. Weird.
The final build will be using the GBA and DS Lite PCBs connected directly to GPIO for controls via Retrogame.
You won't be using that USB port at the end right? This is just for testing right?
You gonna connect the controls to the GPIO?
If the answer to all 3 is yes then forget about it and continue...
Important is the final result.
iBuffalos are weird controllers anyway, like having a mind of their own. ;-)
Testing ABS cement on the battery door went really well. I applied four small blobs of glue on the inside of the door and it set up clear. There are some small air bubbles in it, which I knew to expect, but since it's inside the case, I'm just going to let it. I think it's strong enough that I won't bother to add more glue. If anything, I may fill the hole where the battery door clip was (I had to cut it off as it stuck out inside the case), but aside from that, I'm calling this a success. From the outside, there's no warping or signs that it was glued at all.
Given that success, I decided to take the leap and try to combine the DS Lite ABXY button area with the front of the GBA. I cut out the area from the DS Lite and after a lot of measuring, I marked the case on the GBA.
I then used a Dremel, file, and xacto knife to trim the hole. I accidentally bumped the case with the Dremel chuck, which bugs the heck out of me, but since I will be using some filler to smooth things over for the buttons,it should be be OK, but geeze. I also nicked my finger when I was using the xacto knife and it slipped. Be careful kids.
Now I'm at a point where I need to decide if things are lined up properly before attempting to join them permanently. I've tacked the DS Lite plastic in with some hot glue, but I need a few more sets of eyes on this. With a lot of measuring I think I'm within fractions of a millimeter of perfectly straight, but I'd rather get some feed back before I can't easily undo things.
What do you think?
@obsidianspider you can't deny those lines! Looks good to me!
OK, I'm back in business. That "octopus" hub is just a piece of junk. I updated the wiki entry to reflect my findings.
I went to Best Buy on my lunch break and picked up the Targus ACH114US that was listed as the "original" Gameboy Zero hub and it works perfectly. With my wifi adapter, usb controller, usb keyboard and usb soundcard everything is operating as it should.
lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 6, If 0, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 2: Dev 6, If 1, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 2: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 2: Dev 6, If 3, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 3: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 4: Dev 4, If 0, Class=Vendor Specific Class, Driver=rtl8192cu, 480M
While it works, it's pretty long. Which is the main reason I went with the "octopus" hub originally.
Taking it apart was pretty easy, but I'm going to have to think about how I am going to be able to fit it inside the Gameboy Advance shell.
Another neat thing I learned. The Targus hub has five wires, but it's only USB 2. The plug only has four pins. The fifth blue wire is apparently a "drain" wire and is tied to ground and is connected to all of the metal on the plug and on the socket surrounds.
I've been using this same Targus 4 port usb hub for my retropie builds. They work great! I'm curious to learn more about the blue "drain" wire. How'd you find out about that? Does it work without the blue wire? I kind of snapped the blue wire on one of mine...
@klachow I believe the drain wire is so if there is a static discharge it will ground through that wire. It's connected up to the metal sheath on the USB port itself, not the pins. It should work fine if that's not connected.
@obsidianspider Interesting, that makes sense. Thanks!
Even though I measured over and over again, it still looked "off", but at a certain point, you just have to go for it. I measured, measured again, then taped, and even compared with guides in GIMP.
After quintuple checking everything, I added a dab of glue to the two corners not held by hot glue. Now I wait.
Of course, I accidentally got a dab of ABS cement on the front of the case on the opposite side, and while I wiped it off immediately, the case is no longer perfect. Hopefully it'll not show too much when I paint. I need to be more careful.
After things set up overnight I can do the other corners, working my way around over the course of a few days so as to not cause things to warp.
Well THAT didn't work. I checked on the case tonight and at some point while things were curing, the case cracked. I'm not exactly sure why. Maybe the ABS cement caused stress or it contracted or something, but those who lines on the right are cracks. I pulled the DS Lite plastic out before the ABS cement had totally settled so I could attempt to reuse it, but I'm going to have to rethink things now. I do have that spare case from celly, but maybe this DS Lite hybrid thing isn't going to work. I don't want to butcher a ton of cases just to get this figured out.
Would it not have been better to just drill out the other two holes on a stock case? The holes would not be straight as with the DS layout but you could avoid cracks.
That's not good...I guess when the ABS cement dries, it must expand?
@obsidianspider I don't think cracks are a major issue. You can reinforce it from the back with the abs glue, and you will be filling and painting so you won't actually see it