Every time I wake up PC from sleep I have to go to bluetooth settings -> select device -> enable connection to get sound on bluetooth speakers (Anker Soundcore). Bluetooth came with MBO and drivers were working out of the box after PopOS install.

I hope there is a command I can use instead of clicking in the GUI. Anyone know a command I could use?

[SOLUTION]

Using this command (with bluetooth speaker MAC address):

bluetoothctl connect A4:77:58:0A:DF:F1

[SOLUTION]

Bonus question: I was thinking I could map that command to a keyboard shortcut (like CTRL+ALT+B). What is the best way (or app) to accomplish this? I believe I could google this part quickly, but happy to hear suggestions anyway

[SOLUTION]

It’s possible with PopOS: Settings -> Keyboard -> Keaboard Shortcuts -> Custom Shortcuts

[SOLUTION]

<3

  • Para_lyzed
    link
    1
    edit-2
    7 months ago

    EDIT: Previous answer was distro dependent and had a syntax error. I have replaced it with the following instructions.

    Create 2 files bluetooth-reconnect.sh and bluetooth-reconnect.service. Using your favorite text editor, edit these files so they will contain the following:

    bluetooth-reconnect.sh

    #!/bin/bash
    
    gdbus monitor -y -d org.freedesktop.login1 |
      (while read x; do
        if echo "$x" | grep -q "{'LockedHint': <false>}"; then
          bluetoothctl connect A1:11:22:3A:CD:F1
        fi
      done)
    

    bluetooth-reconnect.service

    [Unit]
    Description=Reconnect Bluetooth after waking from sleep
    After=default.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/bluetooth-reconnect.sh
    
    [Install]
    WantedBy=multi-user.target
    

    Open a terminal in whatever location you created them (you can right click in your file manager and open in terminal, or use cd to navigate). Now move them to the correct locations (you will need sudo privilege for this):

    sudo mv bluetooth-reconnect.sh /usr/local/bin/bluetooth-reconnect.sh
    sudo mv bluetooth-reconnect.service /etc/systemd/system/bluetooth-reconnect.service
    

    Make the script executable:

    sudo chmod +x /usr/local/bin/bluetooth-reconnect.sh
    

    Enable and start the service:

    sudo systemctl enable bluetooth-reconnect.service
    sudo systemctl start bluetooth-reconnect.service
    

    Check to make sure the service started correctly (the “Active:” field should say “active (running)” in green.

    sudo systemctl status bluetooth-reconnect.service
    

    This should now do everything automatically. This has been tested and is working on my Fedora Workstation system (uses GNOME). This should be distro independent, unlike my previous answer (and also without the syntax error I had in my initial submission).

    To uninstall:

    sudo systemctl stop bluetooth-reconnect.service
    sudo systemctl disable bluetooth-reconnect.service
    sudo rm /etc/systemd/system/bluetooth-reconnect.service
    sudo rm /usr/local/bin/bluetooth-reconnect.sh
    
      • Para_lyzed
        link
        2
        edit-2
        7 months ago

        While trying to test this on my system, I came across a few issues. I found a more modern and standardized way to check for login after sleep, and have updated my previous comment with a new script. I have new instructions though that are more comprehensive that you can follow.

        Create 2 files bluetooth-reconnect.sh and bluetooth-reconnect.service. Using your favorite text editor, edit these files so they will contain the following:

        bluetooth-reconnect.sh

        #!/bin/bash
        
        gdbus monitor -y -d org.freedesktop.login1 |
          (while read x; do
            if echo "$x" | grep -q "{'LockedHint': <false>}"; then
              bluetoothctl connect A1:11:22:3A:CD:F1
            fi
          done)
        

        bluetooth-reconnect.service

        [Unit]
        Description=Reconnect Bluetooth after waking from sleep
        After=default.target
        
        [Service]
        Type=simple
        ExecStart=/usr/local/bin/bluetooth-reconnect.sh
        
        [Install]
        WantedBy=multi-user.target
        

        Open a terminal in whatever location you created them (you can right click in your file manager and open in terminal, or use cd to navigate). Now move them to the correct locations (you will need sudo privilege for this):

        sudo mv bluetooth-reconnect.sh /usr/local/bin/bluetooth-reconnect.sh
        sudo mv bluetooth-reconnect.service /etc/systemd/system/bluetooth-reconnect.service
        

        Make the script executable:

        sudo chmod +x /usr/local/bin/bluetooth-reconnect.sh
        

        Enable and start the service:

        sudo systemctl enable bluetooth-reconnect.service
        sudo systemctl start bluetooth-reconnect.service
        

        Check to make sure the service started correctly (the “Active:” field should say “active (running)” in green).

        sudo systemctl status bluetooth-reconnect.service
        

        This should now do everything automatically. This has been tested and is working on my Fedora Workstation system (uses GNOME). This should be distro independent, unlike my previous answer (and also without the syntax error I had in my initial submission).

        To uninstall:

        sudo systemctl stop bluetooth-reconnect.service
        sudo systemctl disable bluetooth-reconnect.service
        sudo rm /etc/systemd/system/bluetooth-reconnect.service
        sudo rm /usr/local/bin/bluetooth-reconnect.sh
        
        • @[email protected]OP
          link
          fedilink
          27 months ago

          Dude this is amazing. Working like a charm and I love linux even more because of you <3 Such a straightforward guide. Have a wonderful day my friend!

          • Para_lyzed
            link
            17 months ago

            One of the wonderful things about Linux is that if something isn’t working, you can just make it work! Also, if you ever need to make a simple service to run a script on boot, you know how now; it can be very useful. Always happy to help though, enjoy your journey through Linux!