ARM Debianでwpa_supplicant 2.4を使用する。接続されたWiFiネットワークの信号レベルを取得
現在接続している無線ネットワークの信号レベルをデシベルまたはパーセントで取得する方法はありますか?私は待って、その後のスキャンを実行することができBSSID、FREQ、SSID、ID、モード、pairwise_cipher、group_cipher、key_mgmt、wpa_state、IP_ADDRESS、P2P_DEVICE_ADDRESS、アドレス、UUID
:
STATUSコマンドは、以下の値のセットを返します。結果とSSIDで検索します。しかし、それは遅くてエラーが起こりやすいので、もっとうまくやりたいです。
ドライバーは情報を知っている必要があります(接続されているため、省エネルギーの送信レベルが調整されているため)。
この質問は、一般的なコンピューティングのハードウェアおよびソフトウェアに関するものではありません。私はwpa_supplicantをwpa_ctrl.h
ヘッダーに定義されているC APIを通じて使用しています。これは、unixドメインソケットのペア(コマンド用と非請求型イベント用)です。
私の現在のSCAN
+ SCAN_RESULT
ソリューションが気に入らない理由の1つとして、非表示のSSIDネットワークでは機能しません。スキャンでネットワークが見つからないため、このように信号レベルが上がっていません。別の問題は、アプリケーションの起動時の視覚的な不具合です。私のアプリはsystemdによって起動されます。After=multi-user.target
最初の打ち上げでない限り、LinuxはすでにWi-Fiに接続されています。私のアプリのGUI(製品にはタッチスクリーンがあります)では、WiFi信号強度アイコンを含む電話のようなステータスバーを表示します。現在のところ、最初は最小レベルを示しています(STATUS
コマンドでSSIDが表示されるため接続されています)。〜1秒後にwpa_supplicantからCTRL-EVENT-SCAN-RESULTS
イベントが送信され、SCAN_RESULT
コマンドが実行され、信号強度が正しい値に更新されます。
APIレベルでは、私のコードは簡単です。私はそのために2つのスレッドを持って、両方のwpa_ctrl_open
を呼び出し、コマンドスレッドがイベントスレッドはpoll
がwpa_ctrl_pending
とwpa_ctrl_recv
続いwpa_ctrl_get_fd()
記述子とPOLLIN
イベントマスクを渡して呼び出す無限ループを持っている、wpa_ctrl_request
を呼び出します。
そして、ここではファイルのリストは、/ SYS /クラス/ネット/ wlan0である:iw compatible devicesについては
./mtu
./type
./phys_port_name
./netdev_group
./flags
./power/control
./power/async
./power/runtime_enabled
./power/runtime_active_kids
./power/runtime_active_time
./power/autosuspend_delay_ms
./power/runtime_status
./power/runtime_usage
./power/runtime_suspended_time
./speed
./dormant
./name_assign_type
./proto_down
./addr_assign_type
./phys_switch_id
./dev_id
./duplex
./gro_flush_timeout
./iflink
./phys_port_id
./addr_len
./address
./operstate
./carrier_changes
./broadcast
./queues/rx-0/rps_flow_cnt
./queues/rx-0/rps_cpus
./queues/rx-1/rps_flow_cnt
./queues/rx-1/rps_cpus
./queues/rx-2/rps_flow_cnt
./queues/rx-2/rps_cpus
./queues/rx-3/rps_flow_cnt
./queues/rx-3/rps_cpus
./queues/tx-0/xps_cpus
./queues/tx-0/tx_maxrate
./queues/tx-0/tx_timeout
./queues/tx-0/byte_queue_limits/limit
./queues/tx-0/byte_queue_limits/limit_max
./queues/tx-0/byte_queue_limits/limit_min
./queues/tx-0/byte_queue_limits/hold_time
./queues/tx-0/byte_queue_limits/inflight
./queues/tx-1/xps_cpus
./queues/tx-1/tx_maxrate
./queues/tx-1/tx_timeout
./queues/tx-1/byte_queue_limits/limit
./queues/tx-1/byte_queue_limits/limit_max
./queues/tx-1/byte_queue_limits/limit_min
./queues/tx-1/byte_queue_limits/hold_time
./queues/tx-1/byte_queue_limits/inflight
./queues/tx-2/xps_cpus
./queues/tx-2/tx_maxrate
./queues/tx-2/tx_timeout
./queues/tx-2/byte_queue_limits/limit
./queues/tx-2/byte_queue_limits/limit_max
./queues/tx-2/byte_queue_limits/limit_min
./queues/tx-2/byte_queue_limits/hold_time
./queues/tx-2/byte_queue_limits/inflight
./queues/tx-3/xps_cpus
./queues/tx-3/tx_maxrate
./queues/tx-3/tx_timeout
./queues/tx-3/byte_queue_limits/limit
./queues/tx-3/byte_queue_limits/limit_max
./queues/tx-3/byte_queue_limits/limit_min
./queues/tx-3/byte_queue_limits/hold_time
./queues/tx-3/byte_queue_limits/inflight
./tx_queue_len
./uevent
./statistics/rx_fifo_errors
./statistics/collisions
./statistics/rx_errors
./statistics/rx_compressed
./statistics/rx_dropped
./statistics/tx_packets
./statistics/tx_errors
./statistics/rx_missed_errors
./statistics/rx_over_errors
./statistics/tx_carrier_errors
./statistics/tx_heartbeat_errors
./statistics/rx_crc_errors
./statistics/multicast
./statistics/tx_fifo_errors
./statistics/tx_aborted_errors
./statistics/rx_bytes
./statistics/tx_compressed
./statistics/tx_dropped
./statistics/rx_packets
./statistics/tx_bytes
./statistics/tx_window_errors
./statistics/rx_frame_errors
./statistics/rx_length_errors
./dev_port
./ifalias
./ifindex
./link_mode
./carrier
-bash:iw:コマンドが見つかりません 私はそれがBroadcomだとは思わない、私はカードがRealtek RTL8723BSだと思います。 – Soonts
https://github.com/torvalds/linux/tree/master/drivers/staging/rtl8723bsはカーネル内のドライバがかなり新鮮だと思われます。 4.15カーネルで正式なiwサポートを受けることができることを願っています。または、vonder(別名Realtek)が提供する独自のソリューションを使用してください。 –
カード自体は、カーネル4.4.71およびwpa_supplicantを使用して今まで完璧に動作します。 私は現在接続している無線ネットワークの信号レベルが必要です。 – Soonts