DevLog #004 — Cutting the Cord: Going Portable

Everything up to this point had been desktop testing. ByteWave sitting on my desk, plugged into a USB-C power supply, running beautifully. But a device called a “pocket computer” that only works plugged into a wall isn’t a pocket computer. It’s a very small desktop.

Time to cut the cord.


The First Time It Ran on Battery

The first battery run used a 5000mAh LiPo pack — what I had available for prototyping. Wired through a boost converter to the Pi’s USB-C port, held my breath, disconnected the power supply, and — it worked. Wavepunk booted. Music played. The beat visualiser pulsed.

I picked it up. Walked around my apartment holding a fully working handheld music player I’d built from scratch. Genuinely one of the better moments of this whole project.

Then, about four minutes later, it crashed.


What Went Wrong: The XL6009 Wall

The boost converter I’d used was an XL6009-based module — cheap, common, and listed as capable of 4A output. Except that’s not really true. In real-world conditions with the Pi 4B’s power draw, the XL6009 tops out at around 2A sustained before the output voltage starts sagging.

The Pi 4B needs a minimum of 3A for stable operation, and under load — audio processing, UI rendering, visualiser — it pulls even more. The voltage sag was triggering the Pi’s undervoltage protection, throttling the CPU, and under heavier load causing full shutdowns.

2A out, 3A+ needed. Simple maths, hard lesson. Took me about 10 minutes with a multimeter before I just read the datasheet properly and saw the real output curve. Embarrassingly quick fix.

Swapping the XL6009 for a proper 4A-rated boost converter module solved that specific problem. Stable output under full Pi load with headroom to spare.


The Battery: LiPo Now, 21700 in the Final Build

For prototyping and testing I’m running a 5000mAh LiPo. It’s what I had on hand, it works, and it gives me a useful runtime baseline to validate the rest of the power architecture before committing to the final battery.

The production battery for ByteWave MK.I will be a 21700 Li-ion cell at 4200mAh. The reasons for choosing 21700 over LiPo for the final device:

  • Mechanical safety — cylindrical 21700 cells are far more robust than LiPo pouches. A device that lives in your pocket needs to handle drops, pressure, and real-world abuse. LiPo is genuinely dangerous if punctured or mechanically stressed.
  • Mature standards — 21700 is the same form factor used in power tools and EVs. Protection circuits and BMS modules are well-developed for this cell type.
  • Replaceability — a 21700 cell can be swapped out cleanly. A custom LiPo pouch is much harder to source and replace.

The 4200mAh capacity is the production target. Slightly less than the 5000mAh LiPo I’m testing with, but the safer and more practical choice for a finished wearable device.


The Power Architecture

Here’s the full circuit I’m building:


[LiPo / 21700 Cell — 3.7V]
          |
    [8A BMS Module]
    |            |
[Overcharge]  [MAX17043 — Fuel Gauge]
[Overdischarge]  → Battery % + Voltage
[Short circuit]  → Duration calculations
          |
  [TP4057 Charger]  ← USB-C charging input (5V 1A)
          |
  [4A Boost Converter → 5V]
          |
  [Raspberry Pi 4B — USB-C]

Walking through each component:

  • 8A BMS — Battery Management System handles protection: overcharge cutoff, over-discharge cutoff, and short circuit protection. 8A rating gives headroom well above what the Pi actually draws. This is the safety layer that stops the battery from being damaged or becoming dangerous.
  • TP4057 Charger — handles Li-ion charging at 5V 1A with proper CC/CV (constant current / constant voltage) profile. Charges safely, cuts off at full charge. Fast charging is planned for MK.II — the MK.I keeps it simple and safe at 1A.
  • MAX17043 Fuel Gauge — this is the one I’m most excited about. The MAX17043 gives accurate battery State of Charge (SoC) percentage and cell voltage via I²C. No more guessing from voltage curves alone. Wavepunk uses this data to display accurate battery percentage and calculate realistic time-remaining estimates for both playback and charging. That “3h 42m remaining” readout is only useful if the underlying data is accurate — the MAX17043 makes it accurate.
  • 4A Boost Converter — steps the battery’s 3.7V up to the stable 5V the Pi needs. 4A rating handles the Pi’s full load with margin.
  • USB-C to Pi — for the testing phase, power goes into the Pi via its USB-C port. Clean, simple, and keeps the Pi’s own power management in the loop while I validate everything else in the chain.

Runtime Calculations

With the LiPo I’m currently testing:

  • Cell capacity: 5000mAh at 3.7V = 18.5Wh
  • Pi 4B average draw (Operative Mode, audio + UI active): ~3.5W
  • Boost converter efficiency: ~85%
  • Effective available power: 18.5 × 0.85 = 15.7Wh
  • Estimated runtime (Operative Mode): 15.7 / 3.5 ≈ ~4.5 hours

With the production 21700 at 4200mAh:

  • Cell capacity: 4200mAh at 3.7V = 15.5Wh
  • Effective available power: 15.5 × 0.85 = 13.2Wh
  • Operative Mode runtime: 13.2 / 3.5 ≈ ~3.75 hours
  • Ghost Mode draw (reduced CPU freq, visualiser off): ~2W
  • Ghost Mode runtime: 13.2 / 2 ≈ ~6.5 hours

Ghost Mode’s CPU frequency reduction earns a real return here — over 6 hours of playback on a pocket device is genuinely usable. These are estimates; once the 4A module and full circuit are validated I’ll post real measured figures.


This is where the build stands right now. The software is working. The power architecture is designed. The LiPo prototype is running. The production components are being sourced.

Next: enclosure design, display integration, and the full hardware assembly — where it stops being components on a desk and starts looking like an actual device.

— Gurteshwar Sandhu, Founder, IronLabs Tech

gurteshwar.sandhu
Written by
gurteshwar.sandhu

Leave a Reply

Your email address will not be published. Required fields are marked *