listar todos os componentes de um computador ARM no Linux?

18

Eu tenho um computador baseado em ARM que parece funcionar bem com o Ubuntu Linux (não GUI). Como obtenho uma lista de todos os componentes que estão neste computador? como tipo de chip Ethernet, chip Wifi, Bluetooth, CPU, chip de gerenciamento de energia etc., se possível.

Curioso101
fonte

Respostas:

11

A variação das implementações do ARM é muito alta para ser coberta com as ferramentas padrão.

Escavando /sys/classvocê encontrará todos os seus componentes, mas é uma dor fazê-lo. Você não pode find /sys/class -name nameencontrar todos os componentes por causa dos links simbólicos. Você também não pode usar find -Lpor causa dos links do círculo.

cat /sys/class/*/*/device/*/{,*/,*/*/}name */*/device/*/name|sort -u

lhe dá uma impressão dos dispositivos, mas se você realmente deseja conhecer os dispositivos com drivers realmente carregados, precisará ler manualmente o seu dmesg.

Philippos
fonte
Obrigado Philippos. Vou passar algum tempo com isso e reportarei de volta.
Curious101
8

Para listar o hardware em dispositivos IoT, geralmente os comandos mais úteis depois de dmesgsão cat /proc/cpuinfoe lsusb.

Na maioria das marcas de IoT, lsusbrevela-se útil, como por exemplo o sinovoip (banana) tende a conectar muito do hardware ao (s) controlador (es) USB (s).

Quanto à listagem de TODOS os componentes; isso não será possível. Não há métodos confiáveis ​​para listar os componentes conectados pelos padrões GPIO ou i2c.

Veja exemplos para a framboesa:

cat /proc/cpuinfo, além de listar todos os núcleos / threads (4 deles aqui), lista no final o modelo do chipset, a revisão e, em algumas placas , o número de série. (você tem que deslizar até o final para vê-lo)

pi@raspberrypi:~ $ cat /proc/cpuinfo
processor   : 0
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 1
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 2
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 3
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

Hardware   : BCM2709
Revision   : a02082
Serial      : 00000000xxxxxxxx

E lsusb:

$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 05dc:a781 Lexar Media, Inc.
Rui F Ribeiro
fonte
O OP mencionou "chip Ethernet, chip Wifi, Bluetooth, CPU, chip de gerenciamento de energia". Eu não conectaria nenhum deles via USB. Ethernet Eu faço principalmente com PCIe, WLAN com SDIO ou PCIe, Bluetooth com UART e PMIC com I2C / SMbus. É um mundo complexo lá em baixo ...
Philippos
@ Philippos Eu também não ... O problema é que muitos fornecedores chineses fazem isso em clones rpi devido a fatores de custo - o wifi via USB é bastante comum. Costumo ficar longe de placas que implementam Ethernet e SATA via USB.
Rui F Ribeiro
1
Interessante, eu não conheci isso. Talvez porque eu trabalho com sistemas, eu me projetei. Agora, lembro que vi alguns módulos 802.11ac com porta USB2 e me perguntei por que alguém poderia querer o padrão rápido com o freio de mão USB. (-X
Philippos
Obrigado Rui. Vou passar algum tempo com isso. Aprecie a mini discussão entre Philippos e Rui sobre este. Forneceu-me algumas dicas úteis sobre o que procurar. vou relatar depois de passar algum tempo nisso.
Curious101
4

A arquitetura ARM não possui nenhum barramento PCI. Eles usam ônibus AMBA.

AMBA

Diagrama de blocos do ARM

Dmesg lhe dará a maioria das informações necessárias.

Simon-Pierre Dubé
fonte
1
Não sei qual dispositivo você está nos mostrando, mas existem muitos SoCs ARM por aí com o PCIe. Infelizmente, a maioria dos periféricos, como a GPU interna, não usa PCIe, então eles não serão exibidos lspci. Portanto, enquanto a primeira parte da sua resposta está errada, a segunda está correta: dmesgé o caminho a percorrer.
Philippos
Não são muitos, não. Somente o Juno tem pistas PCI. E você não o encontrará em nenhum dispositivo disponível para o consumidor, pois nunca decolou, muito caro para produzir e pouco popular. O que você pode ver são os slots Mini-PCIe. Mas eles são controlados pelo hub USB, não há nenhum barramento PCI. Como isso ! um . Não será visto pelo lspci. Mas estou pronto para provar que estou errado, encontre um consumidor disponível com as pistas PCIe.
Simon-Pierre Dubé 27/05
Somente dos ARC SoCs com os quais trabalho atualmente: A família i.MX6 da Freescale (-> NXP -> Qualcomm), provavelmente o SoC mais difundido nesta classe, possui PCIe, além dos chips Sitara AM57 * e AM5K * da TI e Tegra K1 da Nvidia e Snapdragon 600E da Qualcomm. Os consumidores podem obter placas de desenvolvimento ou placas da comunidade ou dispositivos finais (como alguns chromebooks baseados no K1) com eles. Então eu discordo: sim, muitos. A maioria nesta classe
Philippos
1

O lshwcomando fornece uma lista bastante completa dos componentes do seu computador.

Você pode obtê-lo no Ubuntu com apt-get install lshw.

Julie Pelletier
fonte
4
Você nunca correu lshwem uma caixa de braço, não é? Eu nunca vi lshwfornecer nem um terço dos componentes conhecidos pelo sistema através da árvore de dispositivos.
Philippos
1

Para listar todos os componentes em um sistema Linux, você pode usar:

  • O inxicomando com -optionconsulteinxi -h
  • O hwinfocomando semelhante lshwe mais detalhado.
  • o /procdiretório que contém todas as informações sobre o sistema, memória, dispositivos, hardware ....
GAD3R
fonte
2
Funciona dmidecodemesmo no ARM? Ele não depende dos padrões do IBM PC BIOS?
dirkt 26/05
1
@dirkt Nem um pouco. Funciona apenas nos sistemas i386, x86_64 e em alguns ia64.
Duskwuff 26/05