Ubuntu 18.04でTP-Link AC600 Archer T2U Nanoを使う

光回線を導入するに当たって、折角なのでUbuntuがインストールされているデスクトップパソコン用のUSB WiFiアダプタを購入しました。5GHz(802.11ac/802.11a)にも対応したTP-Link AC600 Archer T2Uです。Ubuntu 18.04では、USBに刺しただけでは認識しれくれません。

WiFiアダプタ - TP-Link AC600 Archer T2U Nano をUbuntuで使用するための設定 にインストール方法が出ていましたが、リンク先のソースは更新がしばらく止まっていたので、そのオリジナルらしい、aircrack-ng/rtl8812auを導入しました。リンク先のページの手順でドライバのコンパイルとインストールが行えて、その後USBドングルを挿抜することで認識されました。

2021/3/5 追記: ノートパソコン(Intel Wi-Fi 6 AX200搭載)と、本機を刺したデスクトップパソコンをWSR-1166DHPL2/Nで接続し、SCPでファイル転送してみたところ、最大で130Mbps程度の速度が出ていました。 ノートパソコンは5GHz, デスクトップは2.4GHzでルータに接続しました。

eBayでX520-DA2(互換品)を買った

実験用にSFP+が2本刺さるNICをeBayで購入しました。 富士通のD2755-A11というものです。 Intel 82599Eが載っていて、X520-DA2と事実上同じもののようです。 3月末に注文したのですが、 さすがにコロナウィルスの影響か、遅れに遅れ、6月中旬になってやっと到着しました。

早速箱から出してみると、PCI Expressバスの信号線のAC結合キャパシタが一つ無くなっていることに気が付きました。

調べてみると、x8バスのうち、7番目のペアのようだったので、x4ではリンクすると予想し、 PCのx16スロットに挿して起動してみたところ、案の定x4で動作しました。 Linuxのログに次のように出力されています。

ixgbe 0000:03:00.0: Multiqueue Enabled: Rx Queue count = 6, Tx Queue count = 6 XDP Queue count = 0
ixgbe 0000:03:00.0: PCI Express bandwidth of 16GT/s available
ixgbe 0000:03:00.0: (Speed:5.0GT/s, Width: x4, Encoding Loss:20%)
ixgbe 0000:03:00.0: This is not sufficient for optimal performance of this card.
ixgbe 0000:03:00.0: For optimal performance, at least 20GT/s of bandwidth is required.
ixgbe 0000:03:00.0: A slot with more lanes and/or higher speed is suggested.
ixgbe 0000:03:00.0: MAC: 2, PHY: 16, SFP+: 5, PBA No: D2755A-011

次に、AC結合キャパシタとして0.1uFを実装して、再度起動させてみたところ、やはり同じメッセージです。 使っているマザーボードはZ370 Gaming plusなのですが、 こちらの記事を見ると、2番目のx16 PCIeスロットは、 どうやらx4接続のようです。というわけで、このマザーボードだと、x16を2個は事実上使えないのでした。

x4でもGen3 (8Gbps)接続であれば帯域は不足しないと思いますが、 X520-DA2はそもそもGen2 (5Gbps)までしか対応していないようです。したがって、このボードはx8のバスに刺さない限り最大限の性能を出せません。

とりあえず最大帯域の追求は置いておいて、次にループバックの実験をしてみることにしました。 2つあるSFP+ポートにモジュールを刺して、光ケーブルで接続します。

それぞれのインタフェースに別々のIPアドレスを割り当てて、iperfに-Bオプションを付けて、一方はサーバ、もう一方はクライアントで動作させました。 しかし、結果として帯域が60Gbps近く出たりしています。明らかにおかしい。調査してみたところ、Linuxが最適化しているせいで、 実際にNICからパケットが出ていかず、内部で通信が完結してしまっていたのでした。

Force local IP traffic to an external interfaceに、まさにドンピシャなやり方が書いてありました。 network namespacesを使うと、内部で転送されてしまうことを回避できるそうです。Thomas Tannhäuserさんの回答にならって、

ip netns add ns_server
ip netns add ns_client

ip link set enp3s0f0 netns ns_server
ip netns exec ns_server ip addr add dev enp3s0f0 192.168.2.2/24
ip netns exec ns_server ip link set dev enp3s0f0 up

ip link set enp3s0f1 netns ns_client
ip netns exec ns_client ip addr add dev enp3s0f1 192.168.2.3/24
ip netns exec ns_client ip link set dev enp3s0f1 up

とします(各行はrootで実行)。次いで、

ip netns exec ns_server iperf -s -B 192.168.2.2
ip netns exec ns_client iperf -c 192.168.2.2 -B 192.168.2.3

とすることで、NICが使用されるようです。帯域として、9.4Gbits/sec程度の値が得られました。 サーバ側はTCP window sizeは128KByte, クライアント側はTCP Window size 85KByteと表示されていました。 テスト中も、6コアいずれも30%も行っていませんでしたので、まだまだ余裕がありそうです。

上記9.4Gbits/secはデフォルトのMTU 1500の場合でした。

ip netns exec ns_server ip link set mtu 9000 dev enp3s0f0
ip netns exec ns_client ip link set mtu 9000 dev enp3s0f1

としてMTUを9000に設定してから再度iperfを行ったところ、9.8Gbits/sec以上の速度となりました。調子が良いと9.9Gbits/secまで出ました。

マザーボードを買い換えないで最大帯域の実験をするには、とりあえずGPUを抜いて試すか、 Gen3 x4で動作するX710-DA2あたりを調達するしか無さそうです。

Ubuntu 18.04 LTSで動くUSBドングル購入

自宅で使っているデスクトップパソコンは、USB経由でWiMaxのルータに接続してインターネット接続をしています。 ルータの電源をパソコンからではなくて、コンセントから供給するために、パソコンとルータの通信は無線化することにしました。

少し検索して、I-O DATAのWN-G150UMKを購入しました。Amazonでたったの685円。 黒は685円なのに、なぜか白は1621円という謎。

早速パソコンに挿して見ると、画面右上にWiFiのマークが現れましたので、クリックしてSSIDの選択、 パスワードの入力で接続できました。ドライバを手動でインストールする必要もありませんでした。

iwconfigで見てみると、Bit Rate=1 Mb/sと常に表示されています。でも実際はしっかり速度は出ているようですので、 表示にはバグがありそうです。

**2019/12/13 追記:**次はBluetoothはどうかと思って少し調べてみたところ、 USB 4.0 Bluetoothドングル CSR4.0+ EDRというモノだとUbuntu 18.04で動作しているというコメントがありました。

**2021/2/6 追記:**光回線の導入に合わせて、5GHzにも対応したTP-Linkのドングルを購入しました。こちらはドライバの手動インストールが必要でした。

UbuntuのAlt+Tab動作をウィンドウ単位に変更する

以下の情報はUbuntu 18.04 LTSにて確認しています。

Ubuntuのデフォルトのウィンドウマネージャだと、Alt+Tabを押したときに、 アプリケーション単位で切り替えることができます。でも、Windowsの動作のように、 アプリケーション単位ではなく、ウィンドウ単位で切り替えたいと常々思っていました。

ちょっと調べたところ、いくつかの方法があるようですが、特別なアプリケーションのインストールが不要な方法を見つけましたので、ご紹介します。

答え自体はHow to prevent Gnome-shell’s Alt+Tab from grouping windows from similar apps? にあるものです。

dconf-editorを必要ならインストールします。(端末から)起動してorg/gnome/desktop/wm/keybindingsに移動します。

switch-applicationsから、'<Alt>Tab’を削除します。変更後は次のようになるようにします。

“switch-applications”

編集する際は、次の画面で"Use default value"をオフにすると、その下の"Custom value"を編集できるようになりますので、そこから'<Alt>Tab’を削除します。

“Edit”

次に、switch-windowsに'<Alt>Tab’を追加します。こちらも変更後は次の画面のようになります。

“switch-windows”

以上で完了です。

ちなみに、調べている時に初めて知ったのですが、デフォルトではAlt+(Tabキーの上のキー. 日本語キーボードだと半角/全角キー, 英語キーボードだと`キー)でアプリケーション内でのウィンドウ切り替えができるようです。 このデフォルト動作もそれほど悪くはないかも知れませんが、個人的には上記のように一つのキーストロークで全部のウィンドウを切り替えられる方が頭の負担が減って良い気がします。

Linuxのファイアウォールufwの設定

ufwの設定で、特定のポートを開放する方法は各所に書かれているのですが、ちょっと調べた範囲では、任意ポートをオープンにする方法は見つかりませんでした。

希望としては、特定のネットワークアドレスから、自ホストへの全てのポートへのアクセスを許可したいです。

結果としては、UFW Essentials: Common Firewall Rules and Commandsにある情報でわかりました。

$ sudo ufw allow from 192.168.0.0/24

とすることで、ネットワークアドレス192.168.0.0/24からのアクセスを許可できます。

$ sudo ufw status

で確認すると、

To                      Action             From
--                      ------             ----
Anywhere                ALLOW              192.168.0.0/24

という行が追加されていました。

情報量少ないですが、自分用のメモということで。

1/2 »