Guide · updated 2026-10-05

When bitchat phones cannot see each other

An empty mesh is often a working app with nothing in range, or two phones that are not in the same kind of room. Reinstalling is the last step, not the first. Work through the checks below with both phones on a table.

Confirm you installed phone builds

Both people need the universal or ARM64 APK, not the Wear OS file. A watch package on a handset does not join the phone mesh you are trying to test. If the install itself failed, stop and use which file fits the phone. A processor mismatch never becomes a mesh problem later. It stops at the installer.

Permissions Android will not skip

The project asks at runtime for Bluetooth, location, and notifications. On Android 12 and newer the Bluetooth grant shows up as nearby devices. Location is the one people refuse, because it sounds like a map upload. Android requires that permission before an app is allowed to scan for Bluetooth Low Energy devices. Deny it and the offline mesh usually cannot see peers. That prompt is not the same choice as joining a geohash room. You can refuse the online room and still need the scan permission for the local one.

Turn Bluetooth on. Airplane mode is a fair test of the offline path only after you switch Bluetooth back on. Many phones drop the radio when airplane mode starts.

Battery savers that close the radio

The app uses a foreground service so Android will let the mesh continue away from the chat screen. Phone makers add a second layer. Xiaomi, Oppo, Vivo, Huawei, and some Samsung builds will still freeze an app that is not on an exemption list. For the first test, leave both screens on and both apps open. If messages flow only while the screen is lit, set bitchat’s battery use to unrestricted, and on those skins allow autostart or “no restrictions” under the phone maker’s app settings. The labels differ. The setting lives in the phone’s settings, not in a hidden bitchat menu this site can promise.

Same room, same kind of chat

Test in one room first. Bodies, pockets, and a busy 2.4 GHz space shorten Bluetooth. A mesh that works on a table can go quiet when both phones are in jeans. The project’s hop limit is seven. That is a ceiling. With only two phones and no one in between, they still have to hear each other directly. A third phone helps only when it is actually in range of both and running the app.

A password-protected channel is a different room. The project documents that protection as Argon2id and AES-256-GCM. Someone who was never given the password will not appear as a missed delivery. They are not in the channel.

Geohash rooms are the other split. They need the internet and Nostr relays. A person standing next to you in a city room is not proof the Bluetooth mesh works, and a quiet geohash room is not proof the mesh is broken. Pick the local mesh chat for this test. The geohash guide is the other path.

What a reinstall will not fix

If both phones show the app, the permissions are granted, Bluetooth is on, and you are in the same local channel an arm’s length apart, then it is reasonable to call the install a failure of the radio path rather than of the APK hash. Updating to the same signed version again rarely changes that. A bug in the mesh belongs in the upstream repository, where the people who ship the app can see a phone model and an Android version. This website cannot patch the radio.

Uninstalling does delete local history on that phone. Do it when you are changing signing certificates, not as a superstition. The mesh guide explains hops and deduplication if you want the design rather than the checklist.