How to use Bluetooth tethering via qube that is not sys-net

As mentioned here, I’m presently no longer able to use the Internet via USB tethering using a smartphone.

I am able to connect my phone via Bluetooth to a qube that was originally setup as an audio qube using the tutorial here.

How would I go about setting up Bluetooth tethering of my phone’s Internet connection via the Bluetooth connection to the audio qube I have? Given that I cannot at the moment install packages in sys-net.

I’ve tried selecting the “Network Access Point” option in Blueman Manager that appears when I right click on my connected phone; however I see an error saying it can’t find a device with my phone’s MAC address.

The settings for the WiFi connection I am using include using a randomised MAC address. Turning that off didn’t seem to help Blueman Manager find the device.

Any guides on this topic are appreciated.

So fortunately, sys-net has bluetoothctl available. Using the graphical Blueman Manager would lead to Blueman Manager crashing so switched to the command line.

Here are the steps:

  1. Attach the Bluetooth adapter to the sys-net qube. I forget where I read this exactly, but in the hardware it is typically implemented as a USB device, so you should see yours under the “USB devices” tab.

  2. Open the sys-net terminal and run bluetoothctl. You should see output similar to the following:

$ bluetoothctl
[NEW] Media /org/bluez/hci4 # number can be 0 or more depending on device?
SupportedUUIDs: Unique-UUID-here
SupportedUUIDs: Unique-UUID-here
Agent registered
# … some other output here
[CHG] Controller CON:MAC:ADDR Pairable: yes # CON:MAC:ADDR is a stand-in for the MAC address of your Bluetooth controller.

3. Turn on the scanning mode of your adapter. I am not sure if this applies to every device but the one I was trying to connect to needed me to scan for it before connecting to it.

[bluetoothctl]> scan on
SetDiscoveryFilter success
Discovery started
[CHG] Controller CON:MAC:ADDR Discovering: yes 

4. Once you see the device’s MAC address together with its name, you can then connect to it.

[NEW] Device DEV:MAC:ADDR My Unique Device Name Here # DEV:MAC:ADDR is a stand-in for the MAC address of the device you’re trying to connect to.
# ... other devices with their names and MAC addresses will appear.
# Ignore them
[bluetoothctl]> connect DEV:MAC:ADDR
Attempting to connect to DEV:MAC:ADDR
[CHG] Device DEV:MAC:ADDR Connected: yes
# ... some UUIDs associated with the connection appear in the output.
[CHG] Device DEV:MAC:ADDR UUIDs: Unique-UUID-here-1
[CHG] Device DEV:MAC:ADDR UUIDs: Unique-UUID-here-2
[CHG] Device DEV:MAC:ADDR UUIDs: Unique-UUID-here-3
# ... output truncated ...

5. Make sure to accept the right device. The terminal output can be overwhelming :wink:

[CHG] Device DEV:MAC:ADDR ServicesResolved: yes
Request confirmation
# ... more MAC addresses of Bluetooth enabled devices appear
# Wait until you see the message asking you to confirm the passkey
# The number provided below is an example
[agent] Confirm passkey 0000 (yes/no): yes
[CHG] Device DEV:MAC:ADDR Bonded: yes
[CHG] Device DEV:MAC:ADDR Paired: yes
[CHG] Device DEV:MAC:ADDR AddressType: public

# The failure message is because the device I was connecting to
# is the one that controls how the connection will proceed.
# yours may be different ;)
Failed to connect: org.bluez.Error.Failed br-connection-unknown
[CHG] Device DEV:MAC:ADDR ServicesResolved: no
[SIGNAL] BREDR.Disconnected - org.bluez.Reason.Remote, Connection terminated by remote user
[SIGNAL] Disconnected - org.bluez.Reason.Remote, Connection terminated by remote user
[CHG] Device DEV:MAC:ADDR Connected: no
[CHG] Device DEV:MAC:ADDR Connected: yes
[CHG] Device DEV:MAC:ADDR ServicesResolved: yes
  1. You should see a number of endpoints similar to the line below being loaded (from roughly 0 to 6?)
[NEW] Endpoint /org/bluez/hci4/dev_DEV_MAC_ADDR/sep0
# ... output truncated ...
# ... other messages showing successful connection will show depending on your device
[NEW] Transport /org/bluez/hci4/dev_DEV_MAC_ADDR/sep2/fd0
# You will see a prompt to authorise the connection service
# Make sure it is one of the UUIDs from earlier in the connection setup
Authorize service
[agent] Authorize service Unique-UUID-here-2 (yes/no):
yes
# Turn off scanning once connected
[My Unique Device Name Here]> scan off
Discovery stopped
# You will see a lot of other devices with a nil value for RSSI
# including the one you've connected to
[CHG] Device RAN:MAC:ADDR:01 RSSI is nil
[CHG] Device RAN:MAC:ADDR:02 RSSI is nil
[CHG] Device RAN:MAC:ADDR:03 RSSI is nil
# ... output truncated ...
[CHG] Device DEV:MAC:ADDR RSSI is nil
# ... output truncated ...
[CHG] Controller CON:MAC:ADDR Discovering: no
# ... output truncated ...
[DEL] Device RAN:MAC:ADDR:01 RAN-MAC-ADDR-01
[DEL] Device RAN:MAC:ADDR:02 RAN-MAC-ADDR-02
[DEL] Device RAN:MAC:ADDR:03 random device name
# ... other output truncated ...

7. In Network Connections, one of your icons should show the device you’ve connected to as an option. If the device to which you are connecting is set up to share Internet via Bluetooth, you should be good to go.

P. S: I am sure there is some security implication around information transmitted via the Internet via Bluetooth but this is meant to be a workaround, not a permanent solution :upside_down_face: