briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-11-21T20:37:12Zhttps://code.briarproject.org/briar/briar/-/issues/6Message delays are confusing for users2020-11-21T20:37:12ZakwizgranMessage delays are confusing for usersFeedback from user testing:
Case 1: "From one of the participants of our test:
They had bluetooth and WiFi transports available (3 parties in close proximity). It seemed messages were being sent via mobile data as opposed to bluetooth....Feedback from user testing:
Case 1: "From one of the participants of our test:
They had bluetooth and WiFi transports available (3 parties in close proximity). It seemed messages were being sent via mobile data as opposed to bluetooth. This resulted in sometimes significant delays being seen in sending/receiving messages. With ancedotal measurement these delays were seen between 2-3 minutes and 9-10 minutes.
The users expected bluetooth to be used (as they were all physically near each other). These delays did not match how people were thinking bluetooth would be "instantaneous" communications.
It did not affect things too much but confused people.
Can we clarify how messages are sent received when there are multiple transports available?"
Case 2: "UserA was waiting outside UserB's house. UserA sent UserB a message and said there was approx a 2 minute delay, using mobile data."
Case 3: "I've been at a meeting today. Have checked Briar this morning and twice during the afternoon but not been signed in at length. I've just received all the messages from today at 22:01ish. Some of which had occured before I signed in earlier so I should have received them then. I imagine that maybe I wasn't signed in long enough to receive the data package. As a Whatsapp user id expect to sign in and within a minute have received all the updates from other people. So the response time for thread updates in one issue."https://code.briarproject.org/briar/briar/-/issues/12Timeout while adding a contact2020-11-21T20:35:27ZakwizgranTimeout while adding a contactSeveral users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases b...Several users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases by congestion at the Bluetooth MAC layer, we may be able to mitigate it by keeping a cache of discovered devices and trying to connect to them before performing discovery. If a group of users are adding each other as contacts, the first discovery by each user should put most of the other users' devices in the cache.
If this problem is caused in some cases by poorly performing Bluetooth drivers or hardware, we may not be able to work around it at the application level.
This could be caused by the limit of eight devices (one master and seven slaves) in a Bluetooth piconet. If so, closing any open Bluetooth connections before attempting a new connection may help.https://code.briarproject.org/briar/briar/-/issues/14Sony LiveWare pops up when first connecting via Bluetooth2020-11-21T20:34:24ZakwizgranSony LiveWare pops up when first connecting via BluetoothThe LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every t...The LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every time - it may depend on whether the connection is incoming or outgoing, or there may be a cache of known devices that's cleared when the phone is restarted or reset.
![Screenshot_2014-10-06-13-12-40](/uploads/b94df454ee369fd23adb2544d37ae3b7/Screenshot_2014-10-06-13-12-40.png)https://code.briarproject.org/briar/briar/-/issues/16Pairing confirmation pops up when first connecting via Bluetooth2020-11-21T20:34:00ZakwizgranPairing confirmation pops up when first connecting via BluetoothWhen the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
Th...When the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
This device uses the new API -- `BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord()` and `BluetoothDevice.createInsecureRfcommSocketToServiceRecord()` -- which should not require confirmation.https://code.briarproject.org/briar/briar/-/issues/18Contacts can't communicate if clock difference is too large2021-07-28T10:11:31ZakwizgranContacts can't communicate if clock difference is too largeIf a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently b...If a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently because the devices disagree about which rotation period they're in.
We should check the clock difference when adding a contact and if the difference is excessive, display the time and timezone and warn the users to check that they're using the same timezone. We may also need to make the maximum expected clock difference much larger (on the order of 24 hours rather than an hour), as contacts may change their clocks after adding each other.https://code.briarproject.org/briar/briar/-/issues/31Use built-in error correction for modem plugin?2022-04-18T09:39:27ZakwizgranUse built-in error correction for modem plugin?
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) co...
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) could be removed, reducing the size of the codebase and making BTP connections harder to identify: they would simply be SLIP-framed random data. (SLIP-framed UDP packets full of random data would be another easily implemented option, if that would be less likely to stand out.)
AT commands for enabling error correction (on which modems?):
* AT\N2: Require error correction, report NO CARRIER if the other end doesn't support it.
* AT&Q5: Try to negotiate an error corrected link.https://code.briarproject.org/briar/briar/-/issues/44Reduce battery consumption2022-11-02T18:28:35ZakwizgranReduce battery consumptionSeveral users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the...Several users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the biggest single factor here.https://code.briarproject.org/briar/briar/-/issues/45Reduce mobile data consumption2021-12-13T14:17:30ZakwizgranReduce mobile data consumptionBriar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introd...Briar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introduction points. Can we reduce the amount of bandwidth it uses?
~~Ricochet has a nice solution to this: each time we (re)connect to Tor, try to connect to our peers, and while we remain connected, expect them to connect to us rather than vice versa.~~
~~https://github.com/ricochet-im/ricochet/issues/68~~
~~There may be a race condition, however, if our hidden service doesn't become reachable until after we've polled our contacts' services. Can we poll our own hidden service to check its reachability?~~
~~Another possible culprit is the LAN plugin, which will bind to an interface with a non-local address if no local address is available. This is meant to enable the plugin to work on internal networks that use non-local addresses, such as UCL -- but it may also lead to observable connections across the WAN, so perhaps we should change it.~~https://code.briarproject.org/briar/briar/-/issues/59Traffic analysis prevention layer2022-11-01T14:51:18ZakwizgranTraffic analysis prevention layerThe traffic analysis prevention (TAP) layer is responsible for preventing an observer from determining the volume and timing of data carried by a BTP stream.
What should the interfaces between BTP, TAP and the transport plugin look like...The traffic analysis prevention (TAP) layer is responsible for preventing an observer from determining the volume and timing of data carried by a BTP stream.
What should the interfaces between BTP, TAP and the transport plugin look like? Does the plugin need to be able to ask for a specific stream length, other than setting an upper bound? Are there any transports for which sending data as quickly as possible is preferable (from a TAP point of view) to sending it at a limited rate?
The TAP layer could adjust the transmission rate, increasing it if there's data waiting and decreasing it if not. What could the adversary learn by observing changes in the transmission rate and/or manipulating congestion?
Padding could be handled at the BTP layer by choosing a padding multiplier for each stream. The TAP layer would then sit between BTP and the transport and handle chopping and delaying the stream -- that is, segmenting the encrypted, padded stream according to some segment size distribution, and writing segments to the transport according to some inter-segment delay distribution.
The padding, size and delay distributions can be used to produce a characteristic traffic 'shape' for each device or pair of devices:
http://www.cs.kau.se/philwint/pdf/wpes2013.pdf
We can conceal traffic bursts by throttling the output of the TAP layer so that bursts are smoothed out. However, we should make good use of intermittently available transports -- if we send too slowly, the transport connection may be lost before we finish.https://code.briarproject.org/briar/briar/-/issues/65Two-factor authentication2020-11-21T20:09:51ZakwizgranTwo-factor authenticationAdd optional two-factor authentication to the Android app via NFC -- to log in, the user must tap a particular NFC tag as well as entering their password. Data from the NFC tag is incorporated into the PBKDF. This prevents brute force pa...Add optional two-factor authentication to the Android app via NFC -- to log in, the user must tap a particular NFC tag as well as entering their password. Data from the NFC tag is incorporated into the PBKDF. This prevents brute force password cracking if the Android device is captured but the NFC tag is not.
NFC tags may be readable at long distances, so this won't prevent password cracking by an attacker who can read the NFC tag in advance.
This is weaker than 2FA protocols based on public keys, such as U2F, but those require a trusted server that can deny access to the account if the signature doesn't match.https://code.briarproject.org/briar/briar/-/issues/66Tor plugin reports NOROUTE but network is available2020-11-21T20:08:10ZakwizgranTor plugin reports NOROUTE but network is availableA user submitted this debugging log. Mobile data is shown as available, enabled and connected, but Tor can't connect to the network.
```
Device type:
HTC One_M8 (Htc)
Android version:
4.4.4 (19)
Architecture:
armeabi-v7a, armeabi
Sys...A user submitted this debugging log. Mobile data is shown as available, enabled and connected, but Tor can't connect to the network.
```
Device type:
HTC One_M8 (Htc)
Android version:
4.4.4 (19)
Architecture:
armeabi-v7a, armeabi
System memory:
1827 MiB total, 505 MiB free, 96 MiB threshold
Virtual machine memory:
12 MiB allocated, 1 MiB free, 192 MiB maximum
Internal storage:
2641 MiB total, 380 MiB free
External storage:
25432 MiB total, 9201 MiB free
Mobile data:
Available, enabled, connected
Wi-Fi:
Not available, not enabled, not connected
Address: 0.0.0.0
Bluetooth:
Available, enabled, connectable, not discoverable
Address: XX:XX:XX:XX:XX:XX
Tor plugin:
Enabled, not running
Address: xxxxxxxxxxxxxxxx.onion
LAN plugin:
Enabled, not running
Bluetooth plugin:
Enabled, running
Address: XX:XX:XX:XX:XX:XX
Debugging log:
04-28 19:52:40.351 I/PollerImpl( 3821): Polling DroidtoothPlugin
04-28 19:52:40.561 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:40.561 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:40.561 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 152; recommendation warn)
04-28 19:52:41.651 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:41.651 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:41.651 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 153; recommendation warn)
04-28 19:52:42.691 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:42.691 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:42.691 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 154; recommendation warn)
04-28 19:52:43.671 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:43.671 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:43.671 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 155; recommendation warn)
04-28 19:52:44.721 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:44.721 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:44.721 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 156; recommendation warn)
04-28 19:52:45.631 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:45.631 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:45.631 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 157; recommendation warn)
04-28 19:53:01.891 I/DroidtoothPlugin( 3821): Scan mode: Connectable
04-28 19:53:06.861 I/AddContactActivity( 3821): Loading setting took 0 ms
04-28 19:53:06.881 W/ResourceType( 3821): No package identifier when getting name for resource number 0x00000001
04-28 19:53:06.881 I/InputMethodManager( 3821): [startInputInner] EditorInfo { packageName=org.briarproject, inputType=0x2, imeOptions=0x4006, privateImeOptions=null }, windowGainingFocus=android.view.ViewRootImpl$W@41eb05a8, mServedView=org.briarproject.android.invitation.CodeEntryView$1{41eaabd0 VFED..CL .F....ID 168,0-623,150 #1}
04-28 19:53:07.971 I/ContactListActivity( 3821): Full load took 1 ms
04-28 19:53:11.641 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:11.641 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:11.641 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 158; recommendation warn)
04-28 19:53:12.651 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:12.651 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:12.651 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 159; recommendation warn)
04-28 19:53:12.751 I/SettingsActivity( 3821): Loading settings took 2 ms
04-28 19:53:13.591 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:13.591 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:13.591 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 160; recommendation warn)
04-28 19:53:13.811 I/System ( 3821): exec(logcat -d -v time *:I @ org.briarproject.android.TestingActivity.getStatusMap:433)
04-28 19:53:14.581 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:14.581 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:14.581 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 161; recommendation warn)
04-28 19:53:15.671 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:15.671 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:15.671 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 162; recommendation warn)
04-28 19:53:15.711 I/DatabaseCleanerImpl( 3821): Checking free space
04-28 19:53:15.711 I/DatabaseComponentImpl( 3821): 9753812992 bytes free space
04-28 19:53:16.681 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:16.681 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:16.681 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 163; recommendation warn)
04-28 19:53:31.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:31.611 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.111 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.111 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.151 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.151 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.201 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.201 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.251 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.251 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.301 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.301 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.361 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.361 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.411 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.411 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.461 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.461 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.511 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.511 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.561 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.561 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.611 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.661 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.661 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.711 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.711 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.761 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.771 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.811 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.821 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.871 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.871 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.931 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.931 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.971 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.971 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.011 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.011 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.071 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.071 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.121 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.121 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.171 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.171 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.221 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.221 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.271 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.271 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.331 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.331 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.371 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.371 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.421 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.431 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.481 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.481 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:35.471 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.511 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.561 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.661 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.711 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.761 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.811 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.861 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.911 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.971 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.021 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.071 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.121 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.171 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.221 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.271 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.321 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.371 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.431 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.491 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.531 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.581 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:42.621 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:42.621 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:42.621 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 164; recommendation warn)
04-28 19:53:43.631 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:43.631 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:43.631 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 165; recommendation warn)
04-28 19:53:44.761 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:44.761 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:44.761 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 166; recommendation warn)
04-28 19:53:45.721 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:45.721 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:45.721 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 167; recommendation warn)
04-28 19:53:46.581 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:46.581 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:46.581 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 168; recommendation warn)
04-28 19:53:47.681 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:47.681 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:47.681 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 169; recommendation warn)
04-28 19:53:57.711 I/PollerImpl( 3821): Polling AndroidLanTcpPlugin
04-28 19:54:08.151 I/System ( 3821): exec(logcat -d -v time *:I @ org.briarproject.android.TestingActivity.getStatusMap:433)
```https://code.briarproject.org/briar/briar/-/issues/157Re-adding a deleted Contact does not work2021-06-23T11:58:38ZTorsten GroteRe-adding a deleted Contact does not workSteps to Reproduce:
* add each other as contacts
* delete contact on device A
* try to add contact back on device A
* device B will get an error message and not add anything
* device A will have contact from device B back
However, on bo...Steps to Reproduce:
* add each other as contacts
* delete contact on device A
* try to add contact back on device A
* device B will get an error message and not add anything
* device A will have contact from device B back
However, on both devices, the users see each other as offline and can not exchange messages.
This issue is related to issue #2.https://code.briarproject.org/briar/briar/-/issues/192Failure to open Bluetooth listening socket2020-11-21T19:37:01ZakwizgranFailure to open Bluetooth listening socketGot this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when Bluetooth was enabled to add a contact. The device has been running for several days and making Bluetooth connections. Perhaps some kind of resource leak? Should we be rele...Got this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when Bluetooth was enabled to add a contact. The device has been running for several days and making Bluetooth connections. Perhaps some kind of resource leak? Should we be releasing sockets differently to avoid this?
The Bluetooth adapter is enabled, but the attempt to add a contact fails immediately.
```
12-18 13:22:37.116 25207-26268/org.briarproject W/DroidtoothPlugin: java.io.IOException: No available channels
java.io.IOException: No available channels
at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:1119)
at android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(BluetoothAdapter.java:1067)
at org.briarproject.plugins.droidtooth.InsecureBluetooth.listen(InsecureBluetooth.java:35)
at org.briarproject.plugins.droidtooth.DroidtoothPlugin$2.run(DroidtoothPlugin.java:163)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
```https://code.briarproject.org/briar/briar/-/issues/240Murmur interferes with Bluetooth discovery2020-11-21T19:32:55ZakwizgranMurmur interferes with Bluetooth discoveryWhen Murmur (https://github.com/casific/murmur) has previously run on a device, it continues to run in the background and starts a background service on boot.
The background service seems to interfere with Briar's ability to discover ot...When Murmur (https://github.com/casific/murmur) has previously run on a device, it continues to run in the background and starts a background service on boot.
The background service seems to interfere with Briar's ability to discover other devices via Bluetooth. Log output shows that devices are sometimes discovered, but more slowly, causing Briar to time out before a connection is made.
Stopping Murmur's background service or uninstalling Murmur solves the problem.https://code.briarproject.org/briar/briar/-/issues/267Touching persistent notification doesn't bring app to foreground2020-11-21T19:28:40ZakwizgranTouching persistent notification doesn't bring app to foregroundThe persistent notification says 'Touch to show the dashboard' but touching it has no effect.The persistent notification says 'Touch to show the dashboard' but touching it has no effect.https://code.briarproject.org/briar/briar/-/issues/282Pairing request when adding contact via QR code2020-11-21T19:27:22ZakwizgranPairing request when adding contact via QR codeWhen adding contacts between the Moto G 4G (Android 5.1) and the Galaxy Nexus (Android 4.4.4 CM), the Moto G shows a pairing request notification (sometimes twice, presumably once for the incoming connection and once for the outgoing con...When adding contacts between the Moto G 4G (Android 5.1) and the Galaxy Nexus (Android 4.4.4 CM), the Moto G shows a pairing request notification (sometimes twice, presumably once for the incoming connection and once for the outgoing connection). Even if the pairing request is accepted, the connection fails.
This is an intermittent failure - after backing out of the add contact process and retrying, the connection sometimes succeeds.https://code.briarproject.org/briar/briar/-/issues/288QR RuntimeException: Fail to connect to camera service2020-11-21T19:26:39ZTorsten GroteQR RuntimeException: Fail to connect to camera serviceToday, for the first time, I am unable to add contacts with two devices. One device just doesn't want to focus on the QR code. I am still trying to get it to work (because I need to test something else) and then managed to crash Briar:
...Today, for the first time, I am unable to add contacts with two devices. One device just doesn't want to focus on the QR code. I am still trying to get it to work (because I need to test something else) and then managed to crash Briar:
```
04-06 17:48:10.855 W/ShowQrCodeFragment: Error opening camera
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.native_setup(Native Method)
at android.hardware.Camera.<init>(Camera.java:323)
at android.hardware.Camera.open(Camera.java:298)
at org.briarproject.android.keyagreement.ShowQrCodeFragment$3.doInBackground(ShowQrCodeFragment.java:212)
at org.briarproject.android.keyagreement.ShowQrCodeFragment$3.doInBackground(ShowQrCodeFragment.java:196)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
```
IMHO this error should be handled more graceful.https://code.briarproject.org/briar/briar/-/issues/291Resetting the password/database results in a Strict Mode violation2020-11-21T19:24:47Zstr4dResetting the password/database results in a Strict Mode violationEncountered on Nexus 6P, Android 6.0.1, commit 7c687736d while resetting the Briar database after some incompatible change:
```
04-13 17:12:00.354 17497-17497/org.briarproject I/BriarService: Created
04-13 17:12:00.359 17497-17929/org.b...Encountered on Nexus 6P, Android 6.0.1, commit 7c687736d while resetting the Briar database after some incompatible change:
```
04-13 17:12:00.354 17497-17497/org.briarproject I/BriarService: Created
04-13 17:12:00.359 17497-17929/org.briarproject I/LifecycleManagerImpl: Starting services
04-13 17:12:00.627 17497-17929/org.briarproject W/LifecycleManagerImpl: org.briarproject.api.db.DbException
org.briarproject.api.db.DbException
at org.briarproject.db.JdbcDatabase.open(JdbcDatabase.java:256)
at org.briarproject.db.H2Database.open(H2Database.java:41)
at org.briarproject.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:106)
at org.briarproject.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:79)
at org.briarproject.android.BriarService$1.run(BriarService.java:92)
04-13 17:12:00.627 17497-17929/org.briarproject W/BriarService: Startup failed: DB_ERROR
04-13 17:12:00.641 17497-17497/org.briarproject I/BriarService: Destroyed
04-13 17:12:00.659 17497-17497/org.briarproject I/NavDrawerActivity: Exiting
04-13 17:12:00.660 17497-17497/org.briarproject I/art: System.exit called, status: 0
04-13 17:12:00.660 17497-17497/org.briarproject I/AndroidRuntime: VM exiting with result code 0, cleanup skipped.
04-13 17:12:15.832 18152-18223/org.briarproject W/FileUtils: Failed to chmod(/data/user/0/org.briarproject/shared_prefs/db.xml): android.system.ErrnoException: chmod failed: ENOENT (No such file or directory)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=33 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isFile(File.java:537)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:8)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=32 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isDirectory(File.java:522)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:10)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=32 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isFile(File.java:537)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:8)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:13)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=31 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=65567 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1223)
at libcore.io.BlockGuardOs.remove(BlockGuardOs.java:254)
at java.io.File.delete(File.java:311)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:9)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:13)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
```https://code.briarproject.org/briar/briar/-/issues/303Use Bluetooth LE for peer discovery2022-01-26T13:50:35ZakwizgranUse Bluetooth LE for peer discoverySome newer Android devices support Bluetooth LE peripheral mode, which allows them to send beacons advertising their presence. This could be used as a low-energy and privacy-preserving alternative to polling for device pairs that support...Some newer Android devices support Bluetooth LE peripheral mode, which allows them to send beacons advertising their presence. This could be used as a low-energy and privacy-preserving alternative to polling for device pairs that support it.
https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
Related to #44, #62.https://code.briarproject.org/briar/briar/-/issues/351Overlapping speech bubbles in conversation screen2020-11-21T19:03:30ZakwizgranOverlapping speech bubbles in conversation screenTesters occasionally saw overlapping speech bubbles in the conversation screen.Testers occasionally saw overlapping speech bubbles in the conversation screen.