PackChat: Motorcycle intercom app I needed and built

Overview

My wife and I run Cardo Freecom 2Xs. One friend has Sena. Another guy has some random Amazon special. And the next rider who shows up will probably bring something else entirely.

That is exactly why PackChat exists.

I did not build it to start a comms company. I built it because real ride groups are messy in the most normal way possible:

  • mixed brands
  • mixed budgets
  • mixed generations of hardware
  • zero chance everyone is throwing away perfectly good gear just to match one stack

That is the gap.

Cardo and Sena both make good hardware. Discord works as a hack. But none of those gave me what I actually wanted:

one simple ride channel, mixed gear, glove-friendly controls, and enough scale that headset tier stops deciding who gets to be in the conversation.

That is PackChat.

GitHub repo: https://github.com/Cr0wn-Gh0ul/PackChat

Screenshots

PackChat screenshot 1
PackChat screenshot 2
PackChat screenshot 3
PackChat screenshot 4
PackChat screenshot 5
PackChat screenshot 6



What PackChat is

PackChat is a motorcycle-first group voice app built around simple rider-created channels.

It is not trying to replace local headset intercom for every scenario. It is not pretending the internet works everywhere. It is not trying to become a giant social platform.

It is a practical answer to a practical problem:

how do I get the people I actually ride with into one shared channel using what they already own?

Core features

  • rider-created channels for each ride or group
  • up to 100 people per channel
  • glove-accessible UI
  • advanced audio settings
  • ride leader moderation (mute + deafen)
  • mixed-headset friendly
  • listen-only mode for passive participants
  • phone-based setup with the headset people already use

Main idea: stop forcing the ride group to conform to hardware. Let software bend around the group.

That flexibility matters at the edge of a ride too. Not everyone needs a full motorcycle comms unit just to stay in the loop. Passenger, support vehicle, friend meeting later, or someone tracking the ride can still join in listen-only mode with earbuds.

That is not a replacement for a proper helmet setup. It is just practical.

The channel is for the ride, not one hardware ecosystem.


Why current options still miss this

The issue is not that current products are bad. The issue is they solve different problems.

Cardo and Sena

Cardo and Sena are built around local comms first. Bluetooth intercom, mesh intercom, proprietary features, hardware tiers that define how far and how many.

That works well for what it is designed to do. But mixed, fluid ride groups hit limits fast.

Discord

Discord is what riders reach for when the rider-specific answer is missing. That makes sense. It already has voice, accounts, groups, and internet scale.

But it is still the wrong shape. It is a community platform that happens to have voice. Not a motorcycle-first comms tool built for helmets, gloves, wind, and moving groups.

PackChat

PackChat is the thing in the middle.

Not a headset ecosystem. Not a gaming/community platform. Just an internet-backed voice layer for the ride itself.


Why this gap exists at all

Real ride groups do not form around spec sheets. They form around:

  • who already owns what
  • what was on sale
  • what someone bought two years ago
  • what the local shop recommended
  • what a friend already had mounted in their helmet

So this is not really a "voice chat" problem. It is an interoperability problem.


The hardware ladder is real

A weird truth in this market: capability is still heavily tied to what is clipped to the side of your helmet.

Cardo lineup

Model Price Native mode Rider cap Range
Spirit HD $179.95 Bluetooth 2 0.4 mi / 600 m
Freecom 2X $203.95 Bluetooth 2 0.5 mi / 800 m
Freecom 4X $314.95 Bluetooth 4 0.75 mi / 1.2 km
Packtalk Neo $287.95 sale DMC + Bluetooth 15 1 mi / 1.6 km
Packtalk Edge $439.95 DMC + Bluetooth 15 1 mi / 1.6 km unit-to-unit, up to 5 mi group

Sena lineup

Model Price Native mode Rider cap Range
SPIDER ST1 $239.00 Mesh 24 Group Mesh / virtually limitless Open Mesh up to 5 mi / 8 km mesh conditions
50S $379.00 Bluetooth + Mesh + Wave 4 Bluetooth / 24 Group Mesh / virtually limitless Open Mesh & Wave up to 5 mi / 8 km mesh conditions
60S $439.00 Bluetooth + Mesh + Wave 4 Bluetooth / 24 Group Mesh / virtually limitless Open Mesh & Wave Wave is coverage-based

What single-unit pricing looks like

Single-unit pricing (USD) 0 200 400 Spirit HD $179.95 Freecom 2X $203.95 SPIDER ST1 $239.00 Freecom 4X $314.95 Packtalk Neo $287.95 50S $379.00 60S $439.00 Packtalk Edge $439.95


If I want more native capability, I usually climb a hardware ladder: new tier, new topology, new ecosystem.

PackChat cuts across that. If a headset can pair to a phone like a normal communication device, the whole group does not need to rebuy gear just to make one ride work.


Rider ceilings before internet-backed channels

Finite rider ceilings before internet-backed channels 0 50 100 Freecom 2X 2 Freecom 4X 4 Packtalk Edge 15 Sena Bluetooth 4 Sena Group Mesh 24 PackChat 100


That is the whole reason I built this.

If I only needed 2 to 4 people, Bluetooth intercom already existed. If I only needed 15, Cardo already had an answer. If I wanted 24 in private mesh, Sena already had an answer.

The point of PackChat is simple: group size should stop being dictated by headset tier.


Internet comms are finally practical for this

No hand-waving here: PackChat depends on cellular data. If network dies, PackChat dies with it. There is no local/offline fallback today.

That is a real tradeoff. But the old reflex that "cell-based comms are too fragile to matter" is getting stale. Coverage is better than the old mental model for most roads people actually ride most of the time.

Local mesh is still valuable. Local Bluetooth is still valuable. Internet-backed comms are just not niche anymore.

Once you accept that, the software gap becomes obvious.


PackChat vs Cardo vs Sena Wave vs Discord

Thing Built around Best at Where it breaks
Cardo hardware tiers + local comms small to mid-size local groups mixed-brand groups still hit hardware ceilings
Sena Mesh / Wave Sena ecosystem + local mesh + cellular bigger groups inside Sena's world still centered on Sena's stack
Discord generic community voice internet workaround that already exists not rider-first, not glove-first, not helmet-first
PackChat the actual ride group mixed-brand channels over internet voice depends on cellular coverage

Blunt version

  • Cardo is great at local comms, but ceiling still tracks hardware tier.
  • Sena Wave is closest mainstream answer to what I wanted, but still shaped like Sena.
  • Discord is the workaround because it already exists.
  • PackChat is what I built when I wanted software that actually felt like riding, not server admin.

And yes, PackChat also handles people on the edge of the ride better. Someone does not need a motorcycle comms unit just to follow along. Even AirPods are fine for passive listen-only participation.


Why this is not just "Discord for motorcycles"

Discord gives you voice inside a giant generic platform: servers, categories, roles, text channels, stage channels, platform furniture everywhere.

That is not what I wanted on a bike.

I wanted:

  • a clean ride channel
  • fast join flow
  • controls that still make sense with gloves
  • audio controls that matter in a helmet
  • moderation that maps to how rides actually work
  • passive listen-only support when that is enough
  • something that feels like an intercom, not a social server

That is the difference.


The technical shape

I am not talking directly to Cardo DMC or Sena Mesh. I am not trying to bridge proprietary headset protocols. The headset is the audio endpoint. The phone is the bridge.

flowchart LR H1[Helmet headset] --> P1[Phone] P1 --> A[PackChat] A --> S[WebRTC SFU] S --> B[Other riders' phones] B --> H2[Other helmet headsets]



Flow:

  1. helmet headset pairs to phone
  2. phone joins PackChat channel
  3. mic audio is published over WebRTC
  4. server forwards audio to other riders
  5. remote audio comes back through phone into headset

That architecture matters because PackChat is built around internet-backed channels, not helmet hardware topology.

Why WebRTC + SFU

For tiny calls, P2P is fine. For real rider channels, P2P turns into the wrong topology quickly. Too many direct media relationships, too much overhead, too much complexity as group size grows.

So PackChat uses WebRTC with an SFU model:

  • each device publishes once
  • media layer handles fan-out
  • channel stays sane as participant count grows

That is how you get from demo-scale to up to 100 people per channel.

Why the phone is the key

The phone is the one device every rider already has. That makes it the obvious bridge:

  • across brands
  • across price tiers
  • across hardware generations
  • across real-world ride chaos

Android-first right now because native audio session, routing, and foreground-service work currently lives there.

And because it is phone-bridged, the channel can include passive participants too when that makes sense.

Audio path behavior in real life

Not all Bluetooth audio paths are equal.

PackChat is optimized for newer devices/OS routes when exposed. When that path exists, audio behavior is cleaner and less dragged into legacy call-mode constraints.

When that path is not available, PackChat falls back to classic hands-free communication route. That works, but with known tradeoffs riders already recognize: background audio can get ducked, narrowed, or shoved into low-quality call behavior.

That is not unique to PackChat. That is the reality of older Bluetooth communication paths.

Representative device matrix

Device Category Practical note for PackChat
Cardo Freecom 2X motorcycle headset newer Cardo generation, still classic comms behavior when mic is hot
Cardo Freecom 4X motorcycle headset same general story as 2X with higher local group support
Cardo Packtalk Neo motorcycle headset newer mesh-tier hardware, still subject to classic fallback behavior
Cardo Packtalk Edge motorcycle headset flagship Cardo generation, not something I market as confirmed LE Audio
Sena SPIDER ST1 motorcycle headset newer generation, still behaves like traditional comms path in practice
Sena SPIDER RT1 motorcycle headset same general story as ST1
Sena 50S motorcycle headset strong modern headset, still classic profile-style behavior in real path
Sena 60S motorcycle headset newer hardware, not marketed here as confirmed LE Audio route
AirPods Pro 2 earbuds strong listen-only/passive participant option
AirPods Max headphones useful for support vehicle or off-bike passive listening
Fodsports M1-S Pro budget motorcycle headset more likely to expose obvious classic Bluetooth fallback tradeoffs




Current limitations

Clear limits make the app stronger, so here they are.

1) Bluetooth Classic still means call-grade behavior with active mic

When Bluetooth Classic mic is active, Android uses HFP/SCO path. That means stereo background audio can downgrade into narrowband call-quality behavior.

There is no magic workaround for that on classic Bluetooth. When mic path disengages, normal media quality returns.

2) LE Audio is not really available yet for the motorcycle gear that matters here

PackChat is structured with BLE/LE-aware detection in mind. But current Cardo/Sena helmet firmware I have seen does not expose LE Audio profiles like BAP, PACS, or ASCS in a way this use case can rely on.

So today: optimize for better routes when exposed, otherwise classic fallback.

3) Android only right now

iOS support is planned. Current native modules (ride-audio-session, ride-audio-route, ride-foreground-service) are Android implementations only.

4) Audio-only by design

No video. Intentional. Voice is the right bandwidth/battery/cost tradeoff for motorcycle comms over cellular.

5) No persistent chat/history/recording

Channels are ephemeral. No persistent text, no message history, no call recording. When everyone leaves, channel is gone. By design.

6) No SMS/phone OTP auth yet

Current auth uses Cloudflare-native HMAC session handling. SMS/OTP would require external providers outside the current Cloudflare-first architecture. Not implemented yet.


The shortest version

Cardo and Sena make good hardware. Discord is the workaround riders use when hardware limits get annoying. PackChat is what I built when I got tired of both compromises.

And not everyone following a ride needs a motorcycle comms unit. Sometimes listen-only is enough.

That is really it.