So as more kits are hitting the real world, there are a few niggles that might catch you out. Most of these are pretty easy to fix, so have no fear!!
To understand some of the issues, we have to first understand some of the inner workings. Feel free to skip over this if your just after a quick fix.
The TinyPi board has an atmega328 chip on board, the same as in early Arduino boards. This chip runs the power system, and helps us to get the battery voltage and the power button status over to the Pi. This communication happens over i2c, needing just 2 pins to do all the work. The conversation between the Pi and the TinyPi board is used as a ‘keepalive’ signal, so the TinyPi board knows the pi is there and to keep the power active. Once there has been i2c communication, the TinyPi board then sets a timer, and after 5-6 seconds of no communication, it is assumed that the Pi is no longer there, and the power gets cut.
The buttons on the TinyPi board are directly linked to the gpio pins, and they are monitored by a TinyPi service, which converts the button presses into gamepad events. The TinyPi service also talks to the power system of the TinyPi board, reading the battery voltage and power button state in order to show a battery gauge and menu system.
The original TinyPi needed ninja soldering skills to be able to build. We decided with the Pro version that we wanted it to be as easy to build as possible, which led us down the pogo pin path. We bought many different styles of pins to try and find the best solution, however we ended up getting some custom pins made.
The pins have a static end which is designed to insert into the gpio hole of the pi, and a springy end designed to contact with the TinyPi board. This makes the connection with no soldering at all, lowering the skill level needed to build, and making it ideal for kids and school clubs
So those are the basics, but what issues might you see??
The first thing to check if you are having issues, is the sd card and its image. if its the wrong image, or it didnt write to the SD Card correctly then you will struggle. If your TinyPi has a white back, you should be able to just see the Pi activity light flickering through the plastic. if your struggling to see that, or you have a black case, then you can test the Pi in its own. simply power up the Pi with the SD card in, and nothing else connected, and look for the flickering activity light on the Pi. if it flickers, then your SD card should be fine, if not, try writing it again. You wont be able to safely shut the Pi down in this state, but as long as the activity light isnt going mad, you should be ok to just pull the plug
The screen uses spi to communicate with the Pi and get the image data to it. The backlight is power by the TinyPi board itself, and therefore as long as there is power, you will see backlight. If you are not getting an image on the screen, the first thing to check is that the pi is booting ok using the guide above. If this is fine, then check the screen pins shown here. They should all be sitting flush.
Each of the face buttons and shoulder buttons uses a single gpio pin. if none of the buttons are working, it might be more likely a software issue. check the services guide further down this page.
If its a single button not working, then its probably a pogo pin issue, so check the relevant pin for damage
The digital sound system uses i2s to give the best quality sound from the Pi Zero. The first thing to check is that the pins for the i2s are sitting flush.
another thing to check is the pads the speaker contacts with are clean and shiny. The pads ended up with solder on them from the factory, and this can go dull over time. give them a gentle scrape with a small blade to clean them up
also check that the speaker has its gold contacts facing towards the TinyPi board
Your TinyPi should turn itself off, however if things go wrong, you need a way to pull the plug. Because the menu system uses the power button, we had to get creative!! Here is a video showing how it works
If the 2 boards cant talk to each other, then the menu system stops. in some rare cases, the TinyPi service stops, which also stops the menu and the buttons from working. If all the above is broken then check the services section below. If its only the menu that is broken, then it is most likely the i2c pins. Check these pins are flush, and the ones next to them too. neighbouring pins not being flush can cause issues.
The pogo pins need to sit flush with the Pi for everything to work properly. If you are struggling to get them flush, then there are some issues that may be the cause.
The gpio holes in the Pi might be a little undersized. The holes themselves are not actually designed for these pogo pins!! they are designed for header pins and solder, so they are not as accurate as we need them to be size wise. If you try the pins in the Pi, they should sit in the holes easily and fall out if you tip it all up. If you are having to force the pins in, you can either try another Pi, or open up the gpio holes slightly with a drill or small file.
The pin guide holes could be a little snug. There is sometimes printing dust stuck in the holes, and sometimes the holes can come out a little oval. Try running a 2mm drill down the holes to clean them up. You want it so the pins will fall out of the guide holes if you tip it upside down.
The recess the boards sit into could be obstructed. check the edges of the case to ensure its not damaged and interfering with the boards. also check the corners of the recesses for printing dust and other obstructions.
So the TinyPi specific software is split into 2 services. They live in /usr/bin and are set to run whenever the system starts, and to restart if they stop.
The TinyPiScreen service is actually just a compiled version of the super awesome juj driver. You can see more information about the code, and see just how much work the guy has put in over on his github
The TinyPi service uses custom built code. It reads the status of the gpio pins for the button presses, and converts them into gamepad events that RetroPie can then translate into actions. The service also talks to the TinyPi board to get battery level and power button state, so it can display the battery bar and menu as needed. When the menu is active, button presses are no longer passed to RetroPie, they only go to the menu.
If the TinyPi board is unreachable (no i2c communication) then the service is unable to display the battery bar or menu. The buttons should still work though. If you are also getting no button activity, then its post likely the service has stopped or hung. You can find the status of the service by typing
systemctl status TinyPi
which should return the current status. You could also try restarting the service by typing
sudo systemctl restart TinyPi
which may present you with some messages if the service is struggling to start. If you are having issues, its probably best to go back to the default image to see if the problem persists. If the stock image behaves, it might be worth checking any additional software you may have added/updated and check to see if those have caused any issues