Magic eye りたーんず

意味深に振る舞っている。

table of contents

過去の日記

Akiary v.0.51

アクセス解析

バックナンバー

先月 | 来月 | 最新版 | 日記管理

Raspberry Pi 4 4GB 版買った

2019年12月4日(水)

以下 RPi4 と呼称。RSコンポーネンツで販売が開始された、技適認証済の okdo 版。

アナウンスもされており、実際調べると判るのだが USB Type-C 電源に関る不具合が修正された Rev 1.2。回路上何がダメだったのかは調べてみる価値がありそう。

RPi4 は、単にCPUやUSB3.0等の基本性能の向上に留まらず、従来のシリーズとは大きく異なる点が多い。

  • IPL が書き込まれた SPI EEPROM を搭載しており、従来の「GPU が bootcode.bin を読んでー」というシーケンスとは大きく異なる。ある意味扱い易くなった?
  • やたらとペリフェラルが豊富になった。 一部排他とはいえ UART だけで x6もある。GPIO へのマッピングは DeviceTree の対応次第だろうけれど、これまでの UART + miniUART の組み合わせとは段違いの柔軟さ。
  • PCIe x1 に対応しており、USB 3.0 が接続されている。このコントローラチップをひっぺがして、PCIe SAS HBA を接続する猛者も..
  • BT5対応。おそらく RPi3B+ と同じチップを使ってるであろうことから、CodedPHY には非対応と思われる。要調査。

なんですかねこの凡る顧客の要望をパワーで解決してる感。

created: 2019-12-04T21:53:37+09:00, last modified: 2019-12-06T23:25:19+09:00.

URI : https://www.misasagi.org/201912.shtml#date20191204

Aquantia AQC107 NBASE-T NIC を Linux で使う

2019年12月14日(土)

オタクはカタチから入りがちなので、自宅の 10G 環境は長らく 10GBase-SX あるいは SFP+ DAC がメインだったのだが、Aquantia AQC107 というマルチギガビットなチップを搭載した NIC が普及価格で登場したことで、そろそろ 1Gbps 超の有線LAN規格が本格的普及の幕開けなんじゃないだろうか、ということで 2.5G/5G/10GBase-T NIC を買うことにした。

Aquantia チップを搭載した NIC は幾つかのメーカーから販売されている中で、特に理由はないがエアリア SD-PE410GL-1Lを購入した。なお、自宅には 10GBase-T を収容できる装置が存在しないため、d-link DGS-1510-28X L2SW の SFP+ ポートに 10Gtek 10GBase-T SPF+ を装着して収容してみることにした。ので、自ずと 10G Full での Link Up となる。

で、Linux での動作。例にたがわず debian GNU/Linux 10 buster での動作確認となる。まあ記事にするくらいなので何かよくないことがあったということなんだけれど、純正カーネルパッケージ linux-image-4.19.0-6-amd64 の atlantic.ko をそのまま使用した場合、どうにも 1Gbps 以上の通信速度が出ない。あるいは iperf3 で負荷をかけると stall してしまう。

というわけで、本家のデバイスドライバを組み込んでみる。ドライバはAquantia のサイトで公開されている ので、そちらを頂いてくる。まだ Marvell のドメインにはなっていないが、そのうち変わるだろう。執筆の時点では、20190605_Linux_ver_2.2.6.0.178.zip というファイルだった。

まずは unzip して README を読んでみる。make の手順は概ね問題なかったが、ファイル名とかが結構代わっているため、読み替えや試行錯誤がちょっと必要。実際には次のような手順になるだろう。

  1. ドライバのビルドに必要なパッケージをインストールする
  2. # apt-get install linux-kernel-headers build-essential

  3. unzip すると出てくる tarball を解凍する。
  4. # tar xf atlantic.tar.gz
    # cd Linux

  5. make する
  6. # make

  7. 組み込む前に、純正カーネルパッケージの atlantic モジュールをアンロードしておく。
  8. # ifdown enp1s0 (環境依存なので適宜読み替え)
    # modprobe -r atlantic

  9. make install 前に、ローカルパスのモジュールを insmod してみる。このあたりは手順書どおり。
  10. # modprobe ptp
    # modprobe crc_itu_t
    # insmod ./atlantic.ko

  11. dmesg、lsmod、ifup してみたりして、動作を確認してみる。割愛。
  12. よさそうであれば、一旦アンロードして、make install する。
  13. # rmmod atlantic
    # make && make install

  14. make install では update-initramfs と depmod が走るので、次回以降は新しいドライバがロードされる...はず。ここで再起動してもよいが、せっかくなので modprobe で新しいドライバがロードされるかを確認してみる。
  15. # modprobe atlantic
    # modinfo atlantic
    filename: /lib/modules/4.19.0-6-amd64/updates/drivers/net/ethernet/aquantia/atlantic/atlantic.ko
    description: aQuantia Corporation(R) Network Driver
    author: aQuantia
    ...snip...

普通、カーネルモジュールは kernel/drivers にインストールされるのだが、上書きしないようにするためか、updates/drivers というパスにインストールしてくれる。なかなか親切?な気がするし、気に入らなければ Makefile を弄るとかすればいいと思う。ちなみに dmesg を見ると、次のようなメッセージが出ている。特に firmware まわりが気になる所だけれど、ちゃんと 8Gbps とか出るので、あまり気にしないことにする。

[ 2.642819] atlantic: loading out-of-tree module taints kernel.
[ 2.643005] atlantic: module verification failed: signature and/or required key missing - tainting kernel
[ 2.646319] atlantic 0000:01:00.0: firmware: failed to load aquantia/87B1.fw (-2)
[ 2.647136] atlantic 0000:01:00.0: Direct firmware load for aquantia/87B1.fw failed with error -2

ちなみにタイトルでは Linux をターゲットとしているけれど、箱から出して最初に動作確認を行ったのは VMware ESXi 6.7update3 だった。もちろんそのままでは認識しないため、別途ドライバをダウンロードして組み込む必要がある。ドライバはgithubで公開されているので、気になる人はそちらから。ちなみにスループット測定とかの試験はロクにしていなかったので、どうなるかはわかりまへん。。

created: 2019-12-14T21:03:30+09:00, last modified: 2019-12-14T21:28:54+09:00.

URI : https://www.misasagi.org/201912.shtml#date20191214

先月 | 来月 | 最新版 | 日記管理