It’s been long time since my last post about piBrick. Many things have changed. The development progress is still rolling at a nice pace. Hardware & components selections, layout & dimensions optimizations play smoothly with some challenge that need to solved. Here some overviews about current piBrick developments updates:

Display Panel

After many tests between 3 different displays, I end up with 3.91″ Amoled 1080x1240px @60Hz Touch Display with MIPI/DSI interface. I will not use XGA-IPS (1024×768 @ 60Hz) or @90Hz-Amoled (1080×1240 @ 90Hz) displays for piBrick. Their quality and limitations do not meet the requirements.

The XGA-IPS problem is its display technology. After I saw both Amoled displays, this one panel looks completely inferior. It draws more current than other panels. The @90Hz-Amoled problem is mainly its panel surface color. This color is not black but silver. It is mainly used for VR. Both XGA and @90Hz panels are not touchscreen displays.

Enter the new selected display panel:

  • 1080×1240@60hz
  • Amoled 3.91 Inch
  • Active Area: 65x75mm
  • Capacitive multi touch
  • 16.7M Colors / RGB888
  • MIPI/DSI Interface with I2C for Touch
  • Low power consumption
  • Color is impressive, Black is “black” (amoled)

With this Display Panel, I code the display & touch Kernel Driver, here the good news:

  • Screen blanking(suspend) and screen wakeup working nicely
  • All kernel level driver+overlays (no user-space program needed)
  • Auto-rebuild kernel module on kernel update

There is 2 design consideration with this panel, use it as portrait or landscape with it’s own pro&cons:

Portrait:

  • Better size proportion with keyboard
  • Similar with smartphone dimension
  • Great if you install android&waydroid
  • cons: Harder&denser PCB design (If I am try economic production), Unusual for linux

Landscape:

  • More standard/common for Linux
  • Easier PCB design (more width to work with)
  • Video & remote desktop will be better
  • Cons: Wider&bigger, bad keyboard-screen proportion.

Target Casing Dimension

  • Portrait: 78x140x13mm
  • Landscape: 86x130x13mm

And end up using it as Portrait.

Main Board PCB Development Updates

There are many design changes & hardware considerations in PCB development. At one time, I moved the audio module to a separate PCB. However, I canceled it and integrated it back into the main board. The changes also about battery connectors, Sensors, haptic vibrations and USB functions. The layout is now almost finalized. Some tweaks here and there make it better.

Canceled Separated Audio Module

There is also 3.5mm jack consideration. There are two common standards on this audio pinout implementation. This ends up with the more common CTIA (Apple/Android) TRRS layout for 3.5mm (mic, gnd, r, l).

Main Board PCB 3D View

The 3D Print Saga

I try measuring everything by 3d printing the PCB preview. My 3d printer is not tuned, and I forgot to add support lol. Overall, it fits well. Some holes need to be a bit enlarged, but that’s expected with 3d printing. My 3d printer has been idle for about 1 and half year lol. I just resurrected it.

3d printing the pcb seems becoming a great tactic. I want to ensure the camera can be placed under cm5 with proper clearance. I also want everything to fit in place. The printer still a mess and need tuning for better result.

And after 3d printed pcb preview, I am able to picture many disadvantages & mechanical limitations of previous updates. So I modify some positioning & layouts:

  • Integrated the sound card back into the main board, Previous separated audio module will not play nicely with total device thickness
  • Remove haptic/vibration motor – no real usage if it doesn’t connected to rp2040, if connected to cm5 gpio, it can just added externally via GPIO-EXT pinouts
  • Add GPIO connector with 22pin 0.5mm pitch FPC – Alot of fpc to pin header PCB already available at market, or I can also make simple PCB for GPIO extension that fit in the case
  • Move SDCard position – Edge space limitation
  • Make Bottom Corners Radius Bigger for better & more comfortable handling
  • Route and finished all the I/O connections that were already defined. This includes LED indicators such as battery indicators, cm5 state, pcie led, and keyboard layer status.

3D Case Design

I can’t document much with case design. I just design it based on PCB, displays, and keyboard. The end case design is already in my head long before I route the first PCB signal. And here is the test result for front case:

So far all printable without need any support

Power & Battery Management Issue and CM5 Power Budget

Now I know why hbpi ip5310 needs another chip for charging. It is only used for boost. When the ip5310 outputs and then plugs in the input/charge, the output needs to switch momentarily (off – on). This causes the CM5 to reboot every time it is plugged in or out of the charger. And I need to try another solution for power& battery management.

CM5 need 5A 5V power supply for stable operation, and this requirement is so difficult and almost impossible to meets. Luckily it also will runs with just 3A power but with USB power limitation. I test it with my bench PSU. CM5 cannot boot with just 1A current limit. It is fine with 2A, including nvme, but you cannot attach any USB device. So, 3A is the sweet spot for it. However, all attached USB devices must be limited to not draw more than 900mA.

I cannot find 5000mah lipo with more than 1C (5000mA) max discharge, and 5000mA max discharge is for 3.7V. So the safest boost to 5V is 3A max. I don’t have any other options here, 6600mAh+ will not fit within enclosure.

CM5 standby is around 500mA(5V) with Amoled screen on+NVME without USB ~900mA – 1.5A (up to 1.9A on peak) on highest process.

TODO

  • Finishing power management module (currently testing IP5310 shield module intensively)
  • I want the top USB-C able to also act as charging port and CM5-OTG & Bootloader if it connected to Host/PC
  • Intensively re-check everything from schematic, pcb & signal tracks before start ordering the test production
  • Try to Optimize it for more economically affordable when ordered it in small quantity.
  • I will not output all CM5 GPIO into GPIO-EXT FPC connector (Only about 16-18 gpios + 4-6 powers), so I need to know which most-used gpio pins I should make it available.

I still need many suggestions to improve it and make it better. So any feedback is valuable for me.

Thanks.