For CircuitPython-specific issues, see the CircuitPython software FAQ.
In shipping, the connector for the display may pop the retention tab(s) (red circles below). If you see one that is not in the position below, check to see if the orange display ribbon cable is straight. If so, gently push the tab down towards the main connector.
If you see the ribbon cable crooked, pop both tabs and slide the cable gently so it is in the connector like the picture and straight. then clip each side down.
Repower the PyPortal afterwards and hopefully you'll see the CircuitPython boot text on the screen.
If you look at the pads circled in yellow below, there is a tiny connection between the V and 5 pads indicating a default of 5V power, which may cause issue in certain setups. If you are connecting one our sensors and seeing boot or other issues, try changing the voltage to 3.3V
If you want 3.3 volt power for your I2C connector, carefully cut that tiny trace between V and 5, then using a soldering iron connect the 3 and V pads. The PyPortal was not made to switch often between these two values so double check your I2C data sheets, some sensors can take 3.3 and 5V power so leaving it at 5 should be ok.
If you're on Linux, and are seeing multi-second delays connecting to the serial console, or are seeing "AT" and other gibberish when you connect, then the modemmanager service might be interfering. Just remove it; it doesn't have much use unless you're still using dial-up modems. To remove, type this command at a shell:
sudo apt purge modemmanager
Once your PyPortal boots up and successfully loads your code.py or main.py, the status NeoPixel will turn green briefly. Then, the NeoPixel will show one of the following color codes to indicate the status of the WiFi connection/activity or file operations:
- Red = not connected to WiFi
- Blue = connected to WiFi
- Yellow = fetching data
- Blue = got data
- Cyan = file opening