Как найти и контролировать WLAN-карту с помощью setpci?

На моем ноутбуке есть некоторые функции / горячие клавиши, которые не работают, например, управление яркостью или включение / выключение беспроводной карты. К счастью для меня, я знаю, как управлять яркостью с помощью setpci ex: setpci -s 00:02.0 F4.B=55 где 55 - желаемый уровень яркости.

Итак, вопрос в том, как мне найти мою карту Wlan и включить / выключить ее.

Это вывод команды dumpregs:

cap pos w name
     00 W VENDOR_ID
     02 W DEVICE_ID
     04 W COMMAND
     06 W STATUS
     08 B REVISION
     09 B CLASS_PROG
     0a W CLASS_DEVICE
     0c B CACHE_LINE_SIZE
     0d B LATENCY_TIMER
     0e B HEADER_TYPE
     0f B BIST
     10 L BASE_ADDRESS_0
     14 L BASE_ADDRESS_1
     18 L BASE_ADDRESS_2
     1c L BASE_ADDRESS_3
     20 L BASE_ADDRESS_4
     24 L BASE_ADDRESS_5
     28 L CARDBUS_CIS
     2c L SUBSYSTEM_VENDOR_ID
     2e W SUBSYSTEM_ID
     30 L ROM_ADDRESS
     3c B INTERRUPT_LINE
     3d B INTERRUPT_PIN
     3e B MIN_GNT
     3f B MAX_LAT
     18 B PRIMARY_BUS
     19 B SECONDARY_BUS
     1a B SUBORDINATE_BUS
     1b B SEC_LATENCY_TIMER
     1c B IO_BASE
     1d B IO_LIMIT
     1e W SEC_STATUS
     20 W MEMORY_BASE
     22 W MEMORY_LIMIT
     24 W PREF_MEMORY_BASE
     26 W PREF_MEMORY_LIMIT
     28 L PREF_BASE_UPPER32
     2c L PREF_LIMIT_UPPER32
     30 W IO_BASE_UPPER16
     32 W IO_LIMIT_UPPER16
     38 L BRIDGE_ROM_ADDRESS
     3e W BRIDGE_CONTROL
     10 L CB_CARDBUS_BASE
     14 W CB_CAPABILITIES
     16 W CB_SEC_STATUS
     18 B CB_BUS_NUMBER
     19 B CB_CARDBUS_NUMBER
     1a B CB_SUBORDINATE_BUS
     1b B CB_CARDBUS_LATENCY
     1c L CB_MEMORY_BASE_0
     20 L CB_MEMORY_LIMIT_0
     24 L CB_MEMORY_BASE_1
     28 L CB_MEMORY_LIMIT_1
     2c W CB_IO_BASE_0
     2e W CB_IO_BASE_0_HI
     30 W CB_IO_LIMIT_0
     32 W CB_IO_LIMIT_0_HI
     34 W CB_IO_BASE_1
     36 W CB_IO_BASE_1_HI
     38 W CB_IO_LIMIT_1
     3a W CB_IO_LIMIT_1_HI
     40 W CB_SUBSYSTEM_VENDOR_ID
     42 W CB_SUBSYSTEM_ID
     44 L CB_LEGACY_MODE_BASE
  01 00 - CAP_PM
  02 00 - CAP_AGP
  03 00 - CAP_VPD
  04 00 - CAP_SLOTID
  05 00 - CAP_MSI
  06 00 - CAP_CHSWP
  07 00 - CAP_PCIX
  08 00 - CAP_HT
  09 00 - CAP_VNDR
  0a 00 - CAP_DBG
  0b 00 - CAP_CCRC
  0c 00 - CAP_HOTPLUG
  0d 00 - CAP_SSVID
  0e 00 - CAP_AGP3
  0f 00 - CAP_SECURE
  10 00 - CAP_EXP
  11 00 - CAP_MSIX
  12 00 - CAP_SATA
  13 00 - CAP_AF
0001 00 - ECAP_AER
0002 00 - ECAP_VC
0003 00 - ECAP_DSN
0004 00 - ECAP_PB
0005 00 - ECAP_RCLINK
0006 00 - ECAP_RCILINK
0007 00 - ECAP_RCECOLL
0008 00 - ECAP_MFVC
000a 00 - ECAP_RBCB
000b 00 - ECAP_VNDR
000d 00 - ECAP_ACS
000e 00 - ECAP_ARI
000f 00 - ECAP_ATS
0010 00 - ECAP_SRIOV
3
задан 18 November 2012 в 00:36

1 ответ

Во-первых, использование setpci непосредственно установить аппаратные регистры и состояния может быть опасным только из-за аппаратного доступа очень низкого уровня, если Вы не знаете, что его попробовали, прежде как с подбором яркости Вы упоминаете.

Во-вторых, поскольку я не знаю Вашу модель ноутбука и таким образом ее технические спецификации компонентов, это сообщение является справедливым введение того, как найти информацию с lspci и setpci, который можно адаптировать к потребностям.

В-третьих, все команды прекрасны для выполнения, поскольку они просто запрашивают устройство; только setpci выполненный с sudo на самом деле изменит настройку устройства.

(Если Вы просто хотите отбросить соединение вместо того, чтобы на самом деле переключиться, устройство от Вас может выбрать Ваше wlan устройство и работать sudo iwconfig wlan0 down. Это намного (!) легче, чем попытка позволить/запретить устройство с setpci.)


Первый показ lspci найти адреса всех Ваших аппаратных средств; например, мой контроллер Ethernet

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Теперь используйте адрес шины / домен (02:00:0) и выполненный lspci снова с

sudo lspci -s 02:00.0 -nnvvxxx

и Вы получите полное считывание доступной информации и шестнадцатеричный дамп пространства конфигурации PCI:

02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
    Subsystem: Billionton Systems Inc LNR-100 Family 10/100 Base-TX Ethernet [14cb:0200]
    Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 64 (8000ns min, 16000ns max)
    Interrupt: pin A routed to IRQ 17
    Region 0: I/O ports at 2400 [size=256]
    Region 1: Memory at 44000000 (32-bit, non-prefetchable) [size=512]
    Capabilities: [50] Power Management version 2
        Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
        Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Kernel driver in use: 8139too
    Kernel modules: 8139too, 8139cp
00: ec 10 39 81 07 00 90 02 10 00 00 02 00 40 00 00
10: 01 24 00 00 00 00 00 44 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 02 01 00 00 cb 14 00 02
30: 00 00 00 00 50 00 00 00 00 00 00 00 11 01 20 40
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Шестнадцатеричный дамп продолжается, но я сократил его; Вам будут нужны дальнейшие технические спецификации Вашего устройства для этих значений, чтобы иметь любое значение.

Теперь с setpci --dumpregs можно узнать об общих аппаратных регистрах и затем использовать setpci запрашивать адрес устройства (02:00.0) с, например, один из этих регистров:

setpci -s 02:00.0 STATUS

возвращать значение. Это может быть повторено с другими регистрами в списке, но снова необходимо обратиться к подробной технической информации об устройствах одновременно.

Таким образом, необходимо будет обратиться к техническим спецификациям платы беспроводной локальной сети (и возможно спецификации PCI) так, чтобы можно было найти и выбрать корректный регистр и затем обратиться к lspci и setpci данные, таким образом, можно подготовиться sudo setpci команда, устанавливающая, который позволяет/запрещает карту. Не возможно найти корректный регистр без подробно спецификаций, и часто трудно найти корректное так или иначе. Однако я надеюсь, что это краткое обсуждение могло бы помочь указать на Вас в правильном направлении.

2
ответ дан 18 November 2012 в 00:36

Другие вопросы по тегам:

Похожие вопросы: