Text messages appear in "Debug Panel", but not in Android app

Executive summary:

two devices appear (according to Android app) to not be communicating with one another, but the “Debug Panel” shows that messages are being received but never displayed in the Android app.

Details:

Two Android 12 tablets (Samsung Galaxy Tab A7)
Meshtastic-Android 1.2.67
each is paired to its own RAK4631 1.2.65.0ADC5CE

Both have the same short range, slow configuration (synchronized using the QR code).

The user goes to the left-most tab, tabs on the “All” channel, and sends a message. The cloud icon is empty for a while, and eventually shows the cloud crossed out.

On the other end, the other user sees no message.

HOWEVER, under the “Debug Panel”, the receiving Android device shows a packet (portnum: TEXT_MESSAGE_APP) with the payload showing the message that the other user sent. The most recent example has a rx_snr: 12.75 and rx_rssi: -43

This is true for messages in both directions.

I’m new to trying Meshtastic, so did v1.2 just never work (and v1.3 is an attempt to eventually produce something that does work)?

That the messages show up in the “Debug Panel” seems to indicate no issue with the Meshtastic firmware, but how could the Android app be so dysfunctional as to not manage to display the message (that clearly exists in the “Debug Panel”)?

Android has always worked, 1.3 is more about getting compatible with iOS and refactoring some features that got too big to send over the mesh, I have never seen this before.

Lucky me, I guess, for finding that Android doesn’t work. :frowning:

I’ve done “adb logcat” on both Android devices and then did a grep -i for all lines with “meshtastic”.

The log covers me sending “456” from one node and “789” from the other node. Both give the crossed out cloud on the local device, and neither message shows up in the app on the remote device. However, the remote device does show the message in the “Debug Panel”.

Node A:

09-02 17:33:32.790 1496 1666 D BluetoothAdapterService: syncUpWithBondedList :: DB : addr : E8:E6:A4, name : Meshtastic_df9f, bondstate2
09-02 17:33:33.212 1515 1706 D CachedBluetoothDevice: fillData :: [(N) Meshtastic_df9f], [12], [false], [1f00], [0], [2]
09-02 17:33:45.279 1912 3556 I AppsModelWriter: updateItems(start)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:45.290 1912 3556 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:45.319 1912 3556 I AppsModelWriter: updateItems(end) : updateItem> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:45.767 1912 1912 I Launcher.AppsPagedView: setApps => id: 83, rank: 16, screenId: 0, cellX: 4, cellY: 2, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:33:47.913 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:50.603 1912 1912 I Launcher.AppsPagedView: UpdateItems => id: 83, rank: 16, screenId: 0, cellX: 4, cellY: 2, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:34:11.286 1912 2011 I PackageUpdatedTask: modified, appInfo : AppInfo(id=83 type=APP hidden=0 container=all_apps screen=0 rank=16 user=UserHandle{0} title=Meshtastic componentName=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} screenType=0)
09-02 17:34:11.290 1912 2011 I AppsModelWriter: updateItems(start)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:34:11.293 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:34:11.311 1912 2011 I AppsModelWriter: updateItems(end) : updateItem> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:34:11.315 1912 1912 I Launcher.AppsPagedView: UpdateItems => id: 83, rank: 16, screenId: 0, cellX: 4, cellY: 2, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:34:58.701 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:34:59.234 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:31.688 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:02.077 1912 2011 I PackageUpdatedTask: modified, appInfo : AppInfo(id=83 type=APP hidden=0 container=all_apps screen=0 rank=16 user=UserHandle{0} title=Meshtastic componentName=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} screenType=0)
09-02 17:36:02.079 1912 2011 I AppsModelWriter: updateItems(start)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:02.082 1912 2011 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:02.087 1912 2011 I AppsModelWriter: updateItems(end) : updateItem> 0, 83, 0, -102, 0, 16, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:02.089 1912 1912 I Launcher.AppsPagedView: UpdateItems => id: 83, rank: 16, screenId: 0, cellX: 4, cellY: 2, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:37:03.459 1912 1912 I IconView: applyDotState itemInfo : Meshtastic display : 1 count : 1
09-02 17:37:48.434 1912 1912 W AppStartUtils: sendActiveLaunchBroadcast() v.hasOnClickListeners() : true, iconInfo : AppInfo(id=83 type=APP hidden=0 container=all_apps screen=0 rank=16 user=UserHandle{0} title=Meshtastic componentName=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} screenType=0)

Node B:
09-02 17:33:06.643 2017 2116 D BluetoothRemoteDevices: Remote Device name is: Meshtastic_2b33
09-02 17:33:06.687 2017 2102 D BluetoothAdapterService: syncUpWithBondedList :: DB : addr : EA:CE:5E, name : Meshtastic_2b33, bondstate2
09-02 17:33:06.975 2412 2412 D CachedBluetoothDevice: fillData :: [(N) Meshtastic_2b33], [12], [false], [1f00], [0], [2]
09-02 17:33:06.994 2036 2156 D CachedBluetoothDevice: fillData :: [(N) Meshtastic_2b33], [12], [false], [1f00], [0], [2]
09-02 17:33:21.102 2460 4536 I AppsModelWriter: updateItems(start)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:21.104 2460 4536 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:21.123 2460 4536 I AppsModelWriter: updateItems(end) : updateItem> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:26.397 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:30.443 2460 2460 I Launcher.AppsPagedView: UpdateItems => id: 101, rank: 20, screenId: 0, cellX: 2, cellY: 3, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:33:37.118 6181 6199 D CachedBluetoothDevice: fillData :: [(N) Meshtastic_2b33], [12], [false], [1f00], [0], [2]
09-02 17:33:46.304 2460 2590 I PackageUpdatedTask: modified, appInfo : AppInfo(id=101 type=APP hidden=0 container=all_apps screen=0 rank=20 rankOfList=-1 user=UserHandle{0} title=Meshtastic componentName=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} screenType=0)
09-02 17:33:46.307 2460 2590 I AppsModelWriter: updateItems(start)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:46.309 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:46.319 2460 2590 I AppsModelWriter: updateItems(end) : updateItem> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:33:46.330 2460 2460 I Launcher.AppsPagedView: UpdateItems => id: 101, rank: 20, screenId: 0, cellX: 2, cellY: 3, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:33:59.906 3274 4821 I AppLinksAsyncVerifierV2: Verification result: checking for a statement with source https://www.meshtastic.org, relation delegate_permission/common.handle_all_urls, and target com.geeksville.mesh → false. [CONTEXT service_id=244 ]
09-02 17:33:59.907 3274 7852 I AppLinksHostsVerifierV2: Verification com.geeksville.mesh complete. Successful hosts: . Failed hosts: www.meshtastic.org. Error hosts: . [CONTEXT service_id=244 ]
09-02 17:34:57.766 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:34.451 2460 2590 I BaseIconCache: getPackageItemTitle() : title = Meshtastic
09-02 17:35:34.457 2460 2590 I DataUpdater: updateIconsAndTitle() appItemInfo.title : Meshtastic, componentName : ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity}
09-02 17:35:34.460 2460 2590 I AppsModelWriter: updateItems(start)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:34.493 2460 2590 I AppsModelWriter: updateItems(end) : updateItem> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:34.622 2460 2460 I Launcher.AppsPagedView: UpdateItems => id: 101, rank: 20, screenId: 0, cellX: 2, cellY: 3, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:35:40.346 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.373 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.629 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.709 2460 2590 I PackageUpdatedTask: modified, appInfo : AppInfo(id=101 type=APP hidden=0 container=all_apps screen=0 rank=20 rankOfList=-1 user=UserHandle{0} title=Meshtastic componentName=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} screenType=0)
09-02 17:35:40.711 2460 2590 I AppsModelWriter: updateItems(start)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.712 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.714 2460 2590 I AppsModelWriter: updateItems(end) : updateItem> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.715 2460 2460 I Launcher.AppsPagedView: UpdateItems => id: 101, rank: 20, screenId: 0, cellX: 2, cellY: 3, container: -102, dirty: false, title: Meshtastic, isFolder: false, user: UserHandle{0}, disabled: false, screenType: 0
09-02 17:35:40.795 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:40.947 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:35:41.992 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:00.512 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:36.513 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:36:45.062 2460 2460 I IconView: applyDotState itemInfo : Meshtastic display : 1 count : 1
09-02 17:37:39.708 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:39:19.838 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:40:04.391 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1
09-02 17:40:35.838 2460 2590 I AppsModelWriter: normalizeVisibleItems(visibleItems)> 0, 101, 0, -102, 0, 20, UserHandle{0}, 0, Meshtastic, -1, -1

Do you have the CLI working? If so can you post the output of meshtastic --info for both nodes?

It looks suspicious that myNodeNum appears to be the same; I didn’t see a UI control for that… surely that should be based on a unique number and not left to the user.

Owner: large (lrg)
My info: { “myNodeNum”: 131349231, “numBands”: 13, “firmwareVersion”: “1.2.65.0adc5ce”, “errorCount”: 1, “bitrate”: 600.0, “messageTimeoutMsec”: 300000, “minAppVersion”: 20200, “maxChannels”: 8 }
Nodes in mesh: {‘num’: 131349231, ‘user’: {‘id’: ‘!07d43aef’, ‘longName’: ‘large’, ‘shortName’: ‘lrg’, ‘macaddr’: ‘e7:dd:07:d4:3a:ef’, ‘hwModel’: ‘RAK4631’}, ‘position’: {‘batteryLevel’: 60}, ‘snr’: 12.25}

Preferences: { “phoneTimeoutSecs”: 900, “lsSecs”: 300, “region”: “US”, “positionFlags”: 35 }

Channels:
PRIMARY psk=default { “psk”: “AQ==” }

Primary channel URL: Meshtastic URL | Meshtastic

Owner: small (sml)
My info: { “myNodeNum”: 131349231, “numBands”: 13, “firmwareVersion”: “1.2.65.0adc5ce”, “bitrate”: 600.0, “messageTimeoutMsec”: 300000, “minAppVersion”: 20200, “maxChannels”: 8 }
Nodes in mesh: {‘num’: 131349231, ‘user’: {‘id’: ‘!07d43aef’, ‘longName’: ‘small’, ‘shortName’: ‘sml’, ‘macaddr’: ‘e7:dd:07:d4:3a:ef’, ‘hwModel’: ‘RAK4631’}, ‘position’: {}, ‘snr’: 12.5}

Preferences: { “phoneTimeoutSecs”: 900, “lsSecs”: 300, “region”: “US”, “positionFlags”: 35 }

Channels:
PRIMARY psk=default { “psk”: “AQ==” }

Primary channel URL: Meshtastic URL | Meshtastic

It is run meshtastic --set factory_reset true on each and you should be good.

Thanks. That rectified it.

It bothers me that the Meshtastic implementation seems to have a duplicate (and INVALID) copy of the MAC address that seemingly overrides the unique MAC that it reads from the hardware.

It is also disconcerting that the app fails silently if someone else on the network accidentally or deliberately has the same node number.

At least it is open source, so it has a chance of getting fixed.