Linux

LinuxでBluetoothで接続機種(m5stack)が見つけられないときの対処

最近Bluetoothの機器が非常に見つけづらくなっていて何故か理由が分からなかったのですが以下の設定になっていたので修正

❯❯❯ bluetoothctl show
Controller 48:E7:DA:C2:04:0C (public)
Name: pop-os
Alias: pop-os
Class: 0x006c010c
Powered: yes
Discoverable: yes
DiscoverableTimeout: 0x000000b4
Pairable: yes

この項目が no になっていたことが原因でした。 yes に変更するためには bluetoothctl pairable on というコマンドで設定を変更できます。

m5stack でBLE経由したMouseエミュレーションのプログラムを作成していたのですがなかなかLinux側で認識できてなかったのですがこれで認識ができるようになりました。不具合かなとおもったら一度初診に帰ってそもそもの設定を確認しておくと良いですね。

今回の利用したパラメータは以下の通り。

pairableBluetooth レシーバーのペアリング可否の状態を変更するpairable on|off
discoverableBluetooth レシーバーを、他のデバイスから検索可能な状態にするかどうかを変更するdiscoverable on|off

Wayland環境でGoogle Meet を利用して画面共有 (Screenshare)を行いたい

Waylandになり、画面共有の方法がXorgと異なっています。Chromeのディフォルトの設定では利用できないため設定方法をメモしておきます。

実施方法

Chromeの設定 chrome://flags/#enable-webrtc-pipewire-capturer にて、以下のパラメータを変更します。

WebRTC PipeWire support :  Enable
When enabled the WebRTC will use the PipeWire multimedia server for capturing the desktop content on the Wayland display server. – Linux

Linux上の設定、POPOSでは標準で実施がされていますがもし xdg-desktop-portal-wlr が導入されていない場合にはInstallをします。 apt install で入るはずです。

メモ

ChromeをWaylandモードで動いているかとかその他にもはまりどころは色々ある模様です。こちらを確認しておくと良いかもしれません。https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580

[TailScale] iPhoneとLinux間でのファイル転送(TailDrop)

最近、Wiregrardの技術を使ったVPNサービスであるTailscaleに興味を持って色々触っていますがずっと課題に感じていた iPhone ⇔ Linux 間でのデータ転送を簡単に P2P で実行することとができました。TailScaleは、基本はP2PでのPVNを簡単に作ることができるサービスです。認証部分はTailScaleのサービスがGoogle認証などを促しクライアントに情報を伝達し、通信自体はP2Pで行われる形になる形式の模様です。(TailScaleは認可を担っている)

Install&Howto

この転送機能をtailscaleでは、taildrop (AirDropのもじりですね)と呼んでいます。
https://tailscale.com/kb/1106/taildrop/?tab=macos
内容はこの公式ガイドライン通りなので少しなぞって説明しておきます。

Linux

Linux側の導入は、公式ガイドに沿って実施すれば問題ありません。https://tailscale.com/download/linux 今回はマニュアルでインストールしました。プルダウンから該当するディストリビューションの種類を選んで実行します。

Linux側の注意点としては、tailscale自体が root権限で動いている点です。そのため受信したファイルは root権限のファイルとなっていまいます。接続(tailscale up)後に以下のコマンドで受信ができます。

~/D/tmp
❯❯❯ sudo tailscale file get .

上記のコマンドで受信モードになります。ディレクトリ内のファイルの権限は注意

-rw-r--r-- 1 root root 49212 1月 23 20:22 IMG_7881.PNG
-rw-r--r-- 1 root root 1293555 1月 23 20:15 IMG_7918.PNG

上記実施後、tailscale file コマンドは終了します。

P2Pと言いながらも以前に送信したものが送られてくる感じのタイミングがありました。(tailscale file get を後で実行したら)TialDrop自体のデータがどこかを経由してキャッシュしているのかそのタイミングでiPhone側から送られてきているのかちょっと未検証

iPhone

導入は以下のQRコードで読み取ったAppStoreのアプリをいれるだけす。

アプリは「VPN」アプリとして登録されますので、「設定」→「VPN」でON/OFFすることができます。他のVPNアプリと違って右上にvpnのマークが出てこないため接続されていることを認識しづらさがありますが基本的には使い方は同じで利用したいときだけONにしておけばよいです。
TailDropのやり方は、通常のアプリ共有と同じ方法でできます。複数のファイルを一度に送ることもできますので非常に便利

https://tailscale.com/kb/1106/taildrop/iphone-to-mac.mp4

注意点

便利なtailscaleですが、ローカルのデーモンは root権限で動作します。このため認可を行っているtailscaleやローカルのデーモンのセキュリティホールなどが見つかった場合には非常に危険な動作となります。これらのことを理解したうえで、なるべくであればモジュールのUpdateなどは毎日行う事ができる環境のマシンに導入することを強くおすすめします。

Waylandで簡単にMouseのボタンにキーを割り当てる

やりたいことは、マウスについてる追加のボタンの操作でワークスペースを上下に移動したい。ということです。POP_OS上の設定でGnomeのそれぞれのアクションを ctrl+super+pageUp/Down に割り当てていることを前提にしています。

sudo apt install input-remapper

input-remapper-gtk コマンドでGUIを起動することが出来ます。

右の change key をクリックし、実際のボタンを押してその後 keyboard の箇所で設定をすることになります。

上のように、バインドするキーは手入力ですがサジェストが出てくるので困らないと思います。Applyがボタンになっているので押すと設定がされます。

autoload をONにして、Apply を押しておけば問題ありません。これだけで簡単にマッピングできます。

変更できる選択肢には input デバイスが皆出てきているので意外な使い方ができるかもしれませんね。ちょっとしたマクロなどは こちら を参考に設定することができそうです

[Linux]udevを使ってUSB Keyboard のキーマップを変更する.

Linuxのキーマップを変更する方法はいくつかあるのですが、Xの設定ですると意外にハマるので udevを使って根本から変更していきます。

  • USB KeyBoard : NIZ ATOM66
  • OS : POP OS 22.04

最終的なものは以下のファイル /etc/udev/hwdb.d/90-bluetoothkey.hwdb を作成します

evdev:input:b0005v05ACp0110e0100*
  KEYBOARD_KEY_700e6=rightalt
  KEYBOARD_KEY_700e4=hiragana
  KEYBOARD_KEY_700e3=katakana
  KEYBOARD_KEY_700e2=leftmeta
  KEYBOARD_KEY_700e0=capslock
  KEYBOARD_KEY_70039=leftctrl

設定内容を更新するためには systemd-hwdb update && udevadm trigger で実施します

設定ファイルの中身を見ていく前に、1行目の evdev のあとの番号を調べるのが結構手間なのですが以下のコマンドを実行してからBluetoothを接続すると情報がだらだらっと出てきます。これの input の項目が該当します。

❯❯❯ sudo udevadm monitor --environment | grep -i modalias
MODALIAS=hid:b0005g0001v000005ACp00000110
MODALIAS=input:b0005v05ACp0110e0100-e0,1,2,3,4,11,14,k71,72,73,74,77,7D,7E,7F,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D4,D8,D9,DB,E0,E1,E4,E5,E6,EA,EB,F0,F1,F4,100,161,162,166,16A,16E,172,174,176,177,178,179,17A,17B,17C,17D,17F,180,182,183,185,188,189,18C,18D,18E,18F,190,191,192,193,195,197,198,199,19A,19C,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1AF,1B0,1B1,1B7,1BA,240,241,242,243,244,245,246,247,249,24A,250,251,r6,C,a20,m4,l0,1,2,3,4,sfw
MODALIAS=input:b0005v05ACp0110e0100-e0,1,2,4,k110,111,112,r0,1,8,B,am4,lsfw
MODALIAS=hid:b0005g0001v000005ACp00000110
MODALIAS=hid:b0005g0001v000005ACp00000110
MODALIAS=input:b0005v05ACp0110e0100-e0,1,2,3,4,11,14,k71,72,73,74,77,7D,7E,7F,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D4,D8,D9,DB,E0,E1,E4,E5,E6,EA,EB,F0,F1,F4,100,161,162,166,16A,16E,172,174,176,177,178,179,17A,17B,17C,17D,17F,180,182,183,185,188,189,18C,18D,18E,18F,190,191,192,193,195,197,198,199,19A,19C,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1AF,1B0,1B1,1B7,1BA,240,241,242,243,244,245,246,247,249,24A,250,251,r6,C,a20,m4,l0,1,2,3,4,sfw
MODALIAS=input:b0005v05ACp0110e0100-e0,1,2,4,k110,111,112,r0,1,8,B,am4,lsfw
MODALIAS=hid:b0005g0001v000005ACp00000110

次にどのキーを変更するかは evtest でわかります。適切なInputを選択します。

❯❯❯ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Lid Switch
 (略)
/dev/input/event19: Bluetooth Keyboard
/dev/input/event20: Bluetooth Keyboard Mouse
Select the device event number [0-20]: 19
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x5ac product 0x110 version 0x100
Input device name: "Bluetooth Keyboard"
Supported events:

キーボードのキーを打つと以下のように出てきます。この1行目の最後の値がキーコードになります。以下の例では 700e4 が該当します。これを hiragana キーに変換しているという内容です。

Event: time 1673948095.958733, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e4
Event: time 1673948095.958733, type 1 (EV_KEY), code 91 (KEY_HIRAGANA), value 0
Event: time 1673948095.958733, -------------- SYN_REPORT ------------

以上で変更ができます。updateコマンドを実行するのをお忘れなく

上部へスクロール