18

I have an ARM based computer that seems to work alright running Ubuntu Linux (non GUI). How do I get a list of all the components that are on this computer ? like type of Ethernet chip, Wifi chip, Bluetooth, CPU, power management chip etc if possible.

11

The variation of ARM implementations is too high to be covered with the standard tools.

Digging down /sys/class you will find all your components, but it's a pain to do so. You can't use find /sys/class -name name to find all the components because of the symbolic links. You neither can use find -L because of the circle links.

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

gives you some impression of the devices, but if you really want to know the devices with actually loaded drivers, you will have to read manually through your dmesg.

  • Thanks Philippos. I'll spend some time with this and will report back. – Curious101 May 27 '17 at 5:48
8

For listing hardware in IoT devices, usually the most useful commands after dmesg are cat /proc/cpuinfo and lsusb.

In most IoT brands, lsusb reveals itself useful, as for instance sinovoip (banana) tends to connect a lot of the hardware to the USB(s) controller(s).

As for listing ALL the components; that won't be possible. There are no reliable methods to list components connected via the GPIO or i2c standards.

See examples for the raspberry:

cat /proc/cpuinfo, besides listings all the cores/threads (4 of them here), lists at the end the chipset model, revision, and in some boards, the serial number. (you have to slide until the end to see it)

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

And 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.
  • The OP mentioned "Ethernet chip, Wifi chip, Bluetooth, CPU, power management chip". I wouldn't connect any of those via USB. Ethernet I do mainly with PCIe, WLAN with SDIO or PCIe, Bluetooth with UART and PMIC with I2C/SMbus. It's a complex world down there ... – Philippos May 26 '17 at 8:55
  • @Philippos I would not too...The problem is that many Chinese vendors do it in rpi clones due to cost factors - wifi via USB is fairly common. I tend to stay way from boards that implement Ethernet and SATA via USB. – Rui F Ribeiro May 26 '17 at 8:59
  • 1
    Interesting, I didn't meet such. Maybe because I work with systems I designed myself. Now I remember I saw some 802.11ac modules with USB2 port and wondered why someone could want the fast standard with USB handbrake. (-X – Philippos May 26 '17 at 9:09
  • Thank you Rui. I'll spend some time on these. Appreciate the mini discussion between Philippos and Rui on this one. It provided me some useful insight on what to lookout for. i'll report back after spending some time on this. – Curious101 May 27 '17 at 5:50
4

ARM architecture don't have any PCI bus. They use AMBA bus.

AMBA

ARM Block Diagram

Dmesg will give you most informations you need.

  • 1
    I don't know which device you are showing us, but there are many ARM SoCs out there with PCIe. Unfortunally most peripherals like the internal GPU don't use PCIe, so they won't show with lspci. So while the first part of your answer is wrong, the second is correct: dmesg is the way to go. – Philippos May 26 '17 at 6:01
  • Not many, no. Only the Juno have PCI lanes. And you won't find it on any consumer available devices, as it never took off, too expensive to produce and not popular enough. What you can see is Mini-PCIe slots. But they are driven by the USB Hub, there's no PCI bus at all. Like this !one. It won't be seen by lspci. But i am ready to be proven wrong, find me a consumer available one with PCIe lanes. – Simon-Pierre Dubé May 27 '17 at 23:24
  • Only from the ARM SoCs I currently work with: The i.MX6 family by Freescale (--> NXP --> Qualcomm), probably the most widespread SoC in this class, has PCIe, as well TI's Sitara AM57* and AM5K* chips and Nvidia's Tegra K1 and Qualcomm's Snapdragon 600E. Consumers can get development boards or community boards or final devices (like some K1-based chromebooks) with those. So I disagree: Yes, many. Most in this class – Philippos May 28 '17 at 5:31
1

The lshw command gives a pretty complete listing of your computer's components.

You can get it on Ubuntu with apt-get install lshw.

  • 4
    You did never run lshw on an arm box, did you? I never saw lshw provide even a third of the components known to the system via the device tree. – Philippos May 26 '17 at 5:49
1

To list all components on a Linux system you can use:

  • The inxi command with -option see inxi -h
  • The hwinfo command similar to lshw and more detailled.
  • the /proc directory which contains all the information about the system, memory, devices, hardware ....
  • 2
    Does dmidecode even work on ARM? Doesn't it rely on IBM PC BIOS standards? – dirkt May 26 '17 at 16:14
  • 1
    @dirkt Not even a little bit. It only works on i386, x86_64, and some ia64 systems. – duskwuff -inactive- May 26 '17 at 23:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.