Wednesday, May 12, 2021

Connect Rapoo MT750S with Linux (Tested on Manjaro)

 I bought this obvious copy of MX Master 2S in hopes of having the device switching functionality along with a lightweight body because I have a hard time with heavy mice, like MX Master itself. Also, the ergonomics is a killer here.

But I was having a hard time figuring out how to pair it to my Linux machine, Windows 10 was fine. Literally spent hours trying to Google a solution down. Nothing was showing up. The official pages only provide links to Windows Driver and MacOS drivers. The user manual is more of a translation tutorial rather than something useful. Really really hard to read with such small fonts as well.

But fortunately, switching the search term turned up with a russian blog post that had instructions for it. And an undocumented (or hard to find in the documentation) feature is all I needed. So I am going to post that here in order to keep a record and hope someone else does not have the same hard time.


Things to know:

  1. The device switcher button on the mouse has a "long press" functionality. It puts the specific responder on so the device tries to connect with that.
  2. You need to install 'hcitool" from AUR
Steps:
  1. First need to find out the MAC Address of the Bluetooth device. To do that, in your terminal type

    hcitool scan
  2. With your mouse turned on, long press the device switcher button. You will see that the device number blinker slows down and blink with less frequency. This is, according to the manual, when the mouse is trying to connect to a device
  3. At this point, the hcitool command should turn up with a MAC Address
  4. Now in terminal, type
    bluetoothctl
  5. Now type
    trust <MAC Address>
  6. And type
    connect <MAC Address>
  7. At this point, your mouse should be working already






Keeping a copy of that page here for future reference:

From sunny China came a mouse for the laptop - Rapoo MT550. Excellent ergonomics, power supply from 2xAA batteries promises to be long-lasting, and the most killer feature is work simultaneously with three computers via bluetooth with a simple switch.



Under Windows 10, no problems arose - I turned it on, clicked the "bluetooth scan" on the mouse, Windows found it and that's it.

Under Linux Mint 17.3 Cinnamon - the mouse is visible, but when trying to connect, it is impossible to enter pin code "0000" for this mouse in the pop-up notification. Accordingly, the BT manager has a mouse, but it is indicated that the pairing did not occur. Probably no problem under KDE or other shells.

The solution is that you need to manually pair:

1. Install the packages:

apt-get install bluez-tools
apt-get install bluez-hcidump

The first one swears that it is "untrusted".

2. Execute, on the mouse, press the "bluetooth" button for recognition:

hcitool scan
Scanning ...
6C: 5D: 63: 77: 1D: 1E  RAPOO BT3.

3. In a new terminal window:
sudo hcidump -at
HCI sniffer - Bluetooth packet analyzer ver 2.5

device: hci0 snap_len: 1500 filter: 0xffffffffffffffff

4. We are interested in hci0, execute:
sudo bluez-simple-agent hci0 6C: 5D: 63: 77: 1D: 1E
RequestPinCode (/ org / bluez / 11002 / hci0 / dev_6C_5D_63_77_1D_1E)
Enter PIN Code: 0000
Release
New device (/ org / bluez / 11002 / hci0 / dev_6C_5D_63_77_1D_1E)

It will ask for a pincode, for MT550 - "0000"

5. Making the bluetooth mouse "trusted"
sudo bluez-test-device trusted 6C: 5D: 63: 77: 1D: 1E yes

6. We cling to the mouse:
sudo bluez-test-input connect 6C: 5D: 63: 77: 1D: 1E

You can try to move the mouse - it should be recognized. After rebooting, it was recognized automatically, and in the Bluetooth manager of Mint itself, the mouse is now indicated as paired. 

7. For MT750 / 750S, the connection instructions are the same.

UPDATE for those who have Mint 19 / Ubuntu 18.04:

Although the mouse is detected in the bluetooth manager, it still does not want to connect at point-blank range. Simple-agent and the commands associated with it no longer work
in  bluez-tools .
To connect, enter:
hcitool scan - and hold down the channel selection button (on Rapoo 750S), we see the mouse:
Scanning ...
6C: 5D: 63: 76: AA: 17  RAPOO BT3.0 MS
Next, run the utility:
sudo bluetoothctl 
Shows a bunch of devices in the area, incl. and mouse (for some reason I have different macs and BT versions):
[NEW] Device ED: 8E: 0E: 10: AA: 28 RAPOO BT4.0 MS
[NEW] Device 6C: 5D: 63: 76: AA: 17 RAPOO BT3.0 MS
Then in the console [bluetoothctl]:
help - list of commands
We need to entrust the required MAC and connect:
[RAPOO BT4.0 MS] # trust 6C: 5D: 63: 76: AA: 17
[CHG] Device 6C: 5D: 63: 76: AA: 17 Trusted: yes
Changing 6C: 5D: 63: 76: AA: 17 trust succeeded
[bluetooth] # connect 6C: 5D: 63: 76: AA: 17
Attempting to connect to 6C: 5D: 63: 76: AA: 17
[CHG] Device 6C: 5D: 63: 76: AA: 17 Connected: yes
Connection successful
I can't vouch for the trust / connect sequence - first I tried connect, then trust - the result is negative. After trust - again connect - everything came to life. 
At the time of connect,  you must also keep the channel selection on the 750S.

Saturday, July 04, 2020

Connected to Bluetooth headphones on Arch / Manjaro

I use Manjaro most of the time these days as my daily driver OS. I have tried a few others but I keep coming back to Manjaro. Recently I started using the i3 spin of Manjaro which is as far as I could understand, a community maintained edition. I had one problem with this version right away, bluetooth audio. I use a bluetooth headphone and this needed to be fixed. Thankfully it didn't take much long to find the solution.


You can find the solution here.

https://wiki.archlinux.org/index.php/Bluetooth_headset#Configuration_via_CLI:~:text=Start%20the%20bluetooth.service%20systemd%20unit.

(If you browser does not support text fragments, just go to this link and search for "Start the bluetooth.service systemd unit.")

Thursday, January 02, 2020

Unreal Tournament 2004 bugs in Linux

There are 2 specific problems that I almost always run into when I attempt to run Unreal Tournament 2004 on Linux.


  1. No soound
  2. Libstdc++

I am keeping a note of these 2 here.

For no sound, just use "padsp ./ut2004"

And for Libstdc++, try installing the library through your distro's package manager. Example: "sudo pacman -S libstdc++5" 

Saturday, May 18, 2019

Troubleshooting NetworkManager disconnecting Wifi on Start Up

So I was having this weird problem lately. Whenever I booted my Laptop and it came to the desktop, the Wifi would suddenly get disconnected. It would then stop working at all. I have had this problem before which would not be this repetitive and definitely not this much quick. Well, Manjaro Forums came to the rescue. One of the posters gave a command that turns Wifi off for the 'nmcli' command. I simply converted it into a Wifi Off and Wifi On command. Upon doing that, Wifi got fixed.

#!/bin/bash
nmcli r wifi off
nmcli r wifi on
Credits: https://forum.manjaro.org/t/solved-networkmanager-choose-when-to-enable-wifi-on-reboot/63810/4

Wednesday, May 15, 2019

Installing TP Link TLWN823N on Manjaro / Arch Linux

I will be super quick about this. I received it today and upon connecting on my Manjaro box, it showed by Wifi but with very poor signal. I suspected it could be a driver issue. So I googled and it was pretty easily available. I am doing this write up to sum up the whole process in a script.


git clone https://github.com/Tafhim/rtl8192eu-linux-driver.git
cd rtl8192eu-linux-driver
sudo dkms add .
sudo dkms install rtl8192eu/1.0
echo "blacklist rtl8xxxu" | sudo tee /etc/modprobe.d/realtek.conf
Then reboot.

Tuesday, June 26, 2018

Useful commands for the MariaDB/Mysql DB

So, today I was caught up in a problem where, I was using a migration generator in Python. I accidentally made some mistakes in one of my models, for which, the migration generator lost it's track and subsequently, was generating a duplicate column issue.

Also, another problem was the use of a non UTF-8 collation type. So, I had a pretty rough time trying to solve these things.

I will list down some of the things that I did, not in any useful order, to solve these problems.

#1 I was using SQLAlchemy with Alembic.
Here's the migration that went berserk

def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column('bot_article', sa.Column('blogs_id', sa.Integer(), nullable=True)) #op.drop_constraint('bot_article_ibfk_1', 'bot_article', type_='foreignkey') op.create_foreign_key('bot_article_ibfk_1', 'bot_article', 'blogs', ['blogs_id'], ['id']) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_constraint('bot_article_ibfk_1', 'bot_article', type_='foreignkey') # op.create_foreign_key('bot_article_ibfk_1', 'bot_article', 'blogs', ['blogs_id'], ['id']) op.drop_column('bot_article', 'blogs_id') # ### end Alembic commands ###

So, as you can see from the commands, there was a foreign key constraint for the column that I had deleted. So I had to first delete the creation process of that column. Which subsequently failed since I had to actually also remove the constraint that involved that column. But how to do that?


alter table bot_article drop foreign key bot_article_ibfk_3;

This command above removes that constraint from the table. Now I was free to use the proper column and customize my Alembic script, which is what you just saw.

#2 Fixing column collation.
My problem in this case was that had to fix the collation of a column that was using a latin collations. For this reason, I could not insert my unicode encoded strings. But how did I find out what collation was this using, or even if it was using a wrong collation?


SHOW FULL COLUMNS from bot_article;

This command, shows whatever settings you have for each column. So I had a latin collation. I had to convert it to 'utf8_general_ci'. Way to do that?

ALTER DATABASE flask_app CHARACTER SET utf8 COLLATE utf8_general_ci;

#3 Finding out what foreign key constraints are in effect in columns
This one's pretty useful. To find out everything you need to type to create a column (intact with all it's settings) you have to do the following

show create table bot_article;

#4 How to add collation using SQLAlchemy

db.Column(db.Text(collation='utf8_general_ci'), nullable=True)

It's possible that Alembic will not detect this using the migrate command, you have to manually add this in a migration file.

Monday, December 18, 2017

Change Matplotlib backend to avoid QT5 issues.

This is an issue that has been bugging me for about 5 hours. Until I reached the solution of changing the backend of Matplotlib for good.

import matplotlib
gui_env = ['TKAgg','GTKAgg','Qt4Agg','WXAgg']
for gui in gui_env:
    try:
        print "testing", gui
        matplotlib.use(gui,warn=False, force=True)
        from matplotlib import pyplot as plt
        break
    except:
        continue
print "Using:",matplotlib.get_backend()


Credits: https://stackoverflow.com/a/43015816/1928610

Connect Rapoo MT750S with Linux (Tested on Manjaro)

 I bought this obvious copy of MX Master 2S in hopes of having the device switching functionality along with a lightweight body because I ha...