Orange piでLinuxを動かそう エピソード4

さて、orange piでLinuxをセットアップしていて、たいてい困るのがWifiのusbドングルが動かないという問題。
どうして動かないのかを考える前には、どうして動くのかを理解しましょう。
それには、ノートパソコンで動いているubuntuで動いている様子を確認します。 
 
USBドングルには、それぞれ16進4桁のベンダーIDとプロダクトIDがありまして、それによりどのメーカーのなんとゆー製品なのかを区別してます。

lsusbのコマンドで、確認することが出来ます。

kodera@kodera-dynabook-Satellite-K33-220C-W:~$ lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
|__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=r8188eu, 480M

kodera@kodera-dynabook-Satellite-K33-220C-W:~$ lsusb
Bus 001 Device 008: ID 056e:4008 Elecom Co., Ltd

この例では、ベンダーIDが0x056e、プロダクトIDが0x4008です。
ドライバーがr8188euだということもわかります。

modinfoのコマンドで、r8188euドライバが、どのWIFIドングルを守備範囲にしているのかがわかります。

kodera@kodera-dynabook-Satellite-K33-220C-W:~$ modinfo r8188eu
filename: /lib/modules/4.4.0-78-generic/kernel/drivers/staging/rtl8188eu/r8188eu.ko
version: v4.1.4_6773.20130222
author: Realtek Semiconductor Corp.
description: Realtek Wireless Lan Driver
license: GPL
srcversion: B53056C647125E5874F2A02
alias: usb:v0DF6p0076d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p3311d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p3310d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p330Fd*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v07B8p8179d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v056Ep4008d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0BDAp0179d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0BDAp8179d*dc*dsc*dp*ic*isc*ip*in*

さっき見たベンダーIDとプロダクトIDが含まれているのがわかります。
これが一致することで、このドングルにr8188euのドライバが使われます。

新しいカーネルだと、新しいドングルまで守備範囲に入っているので挿しただけで動くということです。
 
orange piにWIFIドングルを挿しても動かないのは、こうして考えると2つの場合があります。
1)カーネルに含まれているドライバに、このベンダーID、プロダクトIDが含まれていない。
2)そもそも、このドライバがカーネルに入っていない。

動いている環境で調べたドライバ名で、orange piの端末で、
modinfo r8188eu
などとしたら、ドライバが入っているのか、守備範囲から外れているのかがわかります。
 
入っていなかったら、ソースをgitしてきてビルドせねばなりませんが、守備範囲から外れているだけならやりようもあります。
 
次回はその方法について。


[PR]
by studio_do | 2017-06-03 18:33 | 機械室から | Comments(0)
<< Orange piでLinux... 又吉原作 ドラマ「火花」 >>