だから、IdeaPad Yoga 2は私のようにrfkillを半ブロックしたように聞こえます。次のように修正する方法を見つけました。
rfkillは、idead-laptopモジュールによって駆動される組み込みECによって制御されます。このモジュールは、Yoga 2のいくつかの間違った部分を微調整しますが、ありがたいことに、永続的に物を壊すような方法ではありません。
ECは、列挙されたコマンドとプロパティの読み取りおよび書き込みメソッドを備えたACPIプラットフォームデバイスとして存在します。ローカルLinuxソースツリーでideapad-laptop.cを見ると、その構造はかなり明白です。
関心のある3ビットがあります:VPCCMD_W_RF:一般にRFデバイスをオン/オフしますか?これはideapad_laptop.cでは使用されませんが、その逆のVPCCMD_R_RF -is-であるため、興味深いものです。VPCCMD_W_BT:Bluetoothデバイスのオン/オフを切り替えます。VPCCMD_W_WIFI:Wi-Fiのオン/オフを切り替えます。
これらのコマンドごとに、1を送信すると機能がオンになり、0でオフになります。私は、W_RFが実際にヨガで機能していないと疑っています。ideapad-laptopドライバーはその設定を確認し、BTおよびWIFIデバイスの永続的な rfkillフラグをオンにします。
これを修正するには、ローカルバージョンのideapad-laptop.cドライバーをコンパイルします。このドライバーは、できるだけ早く次のコマンドを実行し、その後モジュールを中止します。
write_ec_cmd(ideapad_handle, VPCCMD_W_RF, 1);
write_ec_cmd(ideapad_handle, VPCCMD_W_BT, 1);
write_ec_cmd(ideapad_handle, VPCCMD_W_WIFI, 1);
その後、/ etc / modprobe.d / whatever.conf内のファイルにideapad-laptopモジュールをブラックリストideapad-laptopオプションとともに保持するようにしました。
それ以来、私は順調に働いています。
残念ながら、ideapad-laptopモジュールはカーネルバージョンから別のカーネルバージョンに変更されているため、ビルドされたモジュールを完全なソースファイル用にダンプすることはできませんが、write_ec_cmd文字列をそのファイルで検索し、外部モジュールを構築するためのhttps://www.kernel.org/doc/Documentation/kbuild/modules.txtにあるような指示であれば、問題ありません。
おそらくdebugfsファイルの1つに配置して、debugfsファイルをcattして実行し、rfkillボタンを誤って押す前にモジュールをアンロードすることをお勧めします。
これで、リストをrfkillでき、ブロックされていない自分を確認できるはずです!