Pi in a Gameboy Advance Build - WIP
-
@moosepr the plan is just to use the board from the hub, but I'm only going to do that if the hub works with the zero. If not I'll have to find one that does. Yes, I plan to use USB audio and want to be able to plug in an adapter for Wifi (or hard wire it if it will fit)
-
Well, that was $5 wasted.
I tried adding a full size usb port to the pi, tapping power from the test pads under the micro usb input. Then I tried hot rodding the output by tapping off the power in to the hub and tying power to each individual output instead of going through the board. My wifi and usb audio show up, but a keyboard or controller don't.
I went to the terminal and it looks like this hub is junk. Not a "real" USB 2 hub, just masquerading as one.
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, 12M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtl8192cu, 12M |__ Port 3: Dev 8, If 0, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 3: Dev 8, If 1, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 3: Dev 8, If 2, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 3: Dev 8, If 3, Class=Human Interface Device, Driver=usbhid, 12M
lsusb Bus 001 Device 008: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter Bus 001 Device 003: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] Bus 001 Device 002: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
from
dmesg
- as you can see, the wifi adapter isn't running at full speed.usb 1-1: New USB device found, idVendor=05e3, idProduct=0606 [ 2.264969] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 2.264987] usb 1-1: Product: USB Hub 2.0 [ 2.265002] usb 1-1: Manufacturer: ALCOR [ 2.266261] hub 1-1:1.0: USB hub found [ 2.266546] hub 1-1:1.0: 4 ports detected [ 2.543192] usb 1-1.1: new full-speed USB device number 3 using dwc_otg [ 2.643731] usb 1-1.1: not running at top speed; connect to a high speed hub [ 2.645576] usb 1-1.1: New USB device found, idVendor=7392, idProduct=7811 [ 2.645603] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.645622] usb 1-1.1: Product: 802.11n WLAN Adapter [ 2.723190] usb 1-1.2: new low-speed USB device number 4 using dwc_otg [ 3.183189] usb 1-1.2: new low-speed USB device number 5 using dwc_otg [ 3.643184] usb 1-1.2: new low-speed USB device number 6 using dwc_otg [ 4.143201] usb 1-1.2: new low-speed USB device number 7 using dwc_otg [ 4.643181] usb 1-1.3: new full-speed USB device number 8 using dwc_otg [ 4.744387] usb 1-1.3: New USB device found, idVendor=0d8c, idProduct=000c [ 4.744419] usb 1-1.3: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [ 4.744438] usb 1-1.3: Product: C-Media USB Headphone Set [ 4.752104] input: C-Media USB Headphone Set as /devices/platform/soc/20980000.usb/usb1/1-1/1-1.3/1-1.3:1.3/0003:0D8C:000C.0001/input/input0 [ 4.803575] hid-generic 0003:0D8C:000C.0001: input,hidraw0: USB HID v1.00 Device [C-Media USB Headphone Set ] on usb-20980000.usb-1.3/input3 [ 4.883174] usb 1-1.4: new low-speed USB device number 9 using dwc_otg [ 5.343205] usb 1-1.4: new low-speed USB device number 10 using dwc_otg [ 5.803179] usb 1-1.4: new low-speed USB device number 11 using dwc_otg [ 6.303184] usb 1-1.4: new low-speed USB device number 12 using dwc_otg
When I plug in the Wifi adapter by itself:
lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=rtl8192cu, 480M
from
dmesg
[ 2.083255] usb 1-1: new high-speed USB device number 2 using dwc_otg [ 2.083663] Indeed it is in host mode hprt0 = 00001101 [ 2.285232] usb 1-1: New USB device found, idVendor=7392, idProduct=7811 [ 2.285328] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.285349] usb 1-1: Product: 802.11n WLAN Adapter
Even though it's been listed as "working" on a few websites (which is why I bought it, even though Amazon reviews said it was junk) I'd suggest avoiding this hub for use with a Pi Zero. For what it's worth, I also tried plugging the hub into my Mac and it also shows up as a low speed device even though it's "USB 2"
Now I need to either find a hub that shows up at full speed and try that, or rethink this project…
Edit: I've seen that some cheap hubs will revert back to USB 1 speeds when a USB 1 device is plugged in. The "slow" speeds reported show up even when the only device plugged in is my USB wifi adapter (USB 2) and on my Mac it shows as slow even when I just plug in the hub with nothing else plugged in.
If anyone can recommend a "real" USB 2 hub that's small that shows up as high speed, I'd love to check it out.
-
Well, I'm in a bit of a better mood. I just got an email from Arrow with a promo code for a free Pi 3 after their servers got slammed during their "Free Pi 3 with a purchase of $3.14 or more" promo that was going on. I bought an Adafruit mono amp which I needed anyway, but I wasn't sure if I'd get the actual Pi.
Now that I have a FREE Pi 3 coming my way, do I keep pursuing a hub, or do I try to cram a Pi 3 in this GBA?
-
@obsidianspider someone on the forum did do a Pi3 handheld build. Can't remember who for the life of me, but they did say that it's power consumption is high. Something like half an hour of play time with a 2000mAh battery.
-
@monstermadeofman Half an hour?! Yikes. Definitely something to consider. I'll have to look up power usage by a 3 vs a Zero.
-
@diegzumillo said in Gameboy Pi (Rethought the concept):
My only recommendation is to avoid using pi 3 if possible. Seeing how you want to emulate 16 bit and lower, the pi zero is definitely the way to go. It's cheaper, smaller, easier to power... it's more convenient in every aspect. I say this because I ran into a huge problem with my handheld using pi 3, because it has complicating power demands that the popular powerboost from adafruit cannot handle. And I'm not even able to play anything the zero couldn't handle, because it would require overclocking it the thing.
Other than that, I don't see any difficulties in your project. The PiGrll seems like a solid starting point. I used those buttons on mine and they are awesome!
Everything looks promising! Good luck with everything.
This was the guy! I can't find the post where he was talking about power consumption but you get the idea.
-
@monstermadeofman Thanks
I'm certainly not going to tell them to cancel the free Pi 3 ;) , but I guess I'll go back to hunting for a small hub that actually shows up as a high-speed USB 2.0 hub and will detect a keyboard and controller…
-
Had a quick hunt on the Sudomod wiki and found something that might help you a bit
-
@monstermadeofman said in Pi in a Gameboy Advance Build:
Had a quick hunt on the Sudomod wiki and found something that might help you a bit
That list was the one that told me the "octopus" hub would work! (It doesn't) ;)
-
huh that is odd. They haven't led me astray yet. But then again this is the internet.
I'm using a cheap 4 port hub a chain shop here in the UK, I don't know if you can get it in the US (the brand that is)
http://www.wilko.com/computer-accessories/usb-hub-4-port/invt/0349276
I've got my keyboard and my wifi dongle plugged in and I have no issues.
-
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.
-
@obsidianspider said in Pi in a Gameboy Advance Build:
sound
You talked about a adafruit monoamp? Is this an I2S device, like the one used in my latest build? Maybe you will then also find the I2S sound config be useful.
USB Hub issues
Yes, that's hard. I had luck with my both hubs - they worked all flawlessly. But take care about power consumption. Those passive hubs can just provide 100mA per connector and some external devices (USB WLAN STICKS!!!) can use more than 100mA. I got an old WLAN stick working as I desoldered the power LED.
Pi0 and Internet connection
Yes... therefore you should backup your wifi credentials :)
It's driving me crazy to get a internet connection .... but @BuZz made a cool job with the Wifi key import feature for RetroPie -
@cyperghost I ordered the Adafruit 2130 amp which I believe will accept a line in and amplify it. At least that's what I want it to do.
So far the Targus hub is working well.
I saw that Targus had a small blob of hot glue where the wires met the PCB as a bit of strain relief. Inspired by that I added a blob of glue (maybe a bit too much, we'll see) to where I soldered the ribbon cable to the screen PCB. The next thing I'll need to do is modify the case to fit the screen, and I shouldn't have to chop too much, and a quick mockup shows that I won't have too much of the screen cut off by the factory screen cover, which I think I'm probably going to keep in place. If anything, upgrading to a glass one.
-
@obsidianspider i was going to use the 2.8 ili9341 (i think its the same as the one on your screen actually) in my advance. It actually fits pretty well, just a slightly different aspect ratio than a standard GBA screen.
Have you got much clearance between the sides of the screen and the buttons? i was worried i would have to shave some off the sides of the buttons to get it all to fit (although i didnt actually get that far in)
-
@obsidianspider Yes it's a class D amplifier.... It will work for your project.
If you run into "housing space" trouble then you can use the I2S device from adafruit like I used.BTW: Cool project!
-
@moosepr I actually got the 3.2" screen. I've seen guys cram a 3.5" screen in when removing the front protector, so I figured I'd try a 3.2" screen. It looks like it'll fit and go up against the edge of the button slide on one side based on a build I found, but I haven't gotten to trimming yet. I also messed around with overscan a bit and it looks like this 3.2" screen supports it, so if I find that things are being clipped off I can tweak as necessary. It'd mean even more compression of the 320x240, but in my experiments it's not much worse than the "full resolution".
-
@cyperghost I wasn't even aware of the whole "I2S" thing until just now. Hmm…
-
I'm still not sure how things are going to shake out with cutting the case to fit the screen, but I took the screen cover off (it was scratched anyway) and since the case is translucent I taped the screen to the outside of the case so I could see how much was being hidden by the factory opening. With the 3.2" display the width is darn near perfect, but the height is an issue. The Gameboy Advance's 2.9" screen is a 3:2 ratio and my 3.2" screen is a more traditional 4:3 ratio.
With settings "out of the box" the bottom of the screen is clipped off by the factory hole opening.
I went into
/boot/config.txt
and setoverscan_bottom=28
After that I saw some "black bars" in a few games so I forced the aspect ratio for RetroArch to 4:3 and now things fill the screen area and nothing more. I think I'm going to keep the factory hole and just lose those 28 pixels. What do you think?
-
I took the plunge and cut the case to fit the screen in. Taking out the side and going right up to the edge of the button slide got the screen to fit really well.
I'm going to have to figure out what to do about the speaker since the screen now intrudes on the speaker area, but overall I'm happy with how the screen turned out. I won't be removing the screen protection film yet, and I won't be gluing the screen in until I figure out my buttons (debating how to do the ABXY thing) but I'm making progress.
-
@obsidianspider I was planning on buying 2 lots of buttons from Kitsh-Bent (http://store.kitsch-bent.com/product/custom-buttons), and then drill the extra holes for the second A and B buttons (maybe mould some supports from sugru or something) but they only have clear ones, and the postage to the UK was like $17 so that put the stops on that!!
will the buttons from your NES controller fit in the GBA button holes?
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.