Re: Gotta start somewhere ... how many of us are really out there?



On 4/08/2006 4:58 AM, User Freebsd wrote:
Getting a list of devices is actually pretty easy, and I've tried this on my 4.x machines also, so it isn't something that will be a problem on older versions:

# pciconf -l
chip0@pci0:0:0: class=0x060000 card=0x00000000 chip=0x700c1022 rev=0x20 hdr=0x00
...
And, more specifically, we can get:

# pciconf -l -v
asr0@pci0:9:0: class=0x010400 card=0xc0351044 chip=0xa5111044 rev=0x01 hdr=0x00
vendor = 'Adaptec (Formerly: Distributed Processing Technology (DPT))'
device = 'Raptor SmartRAID Controller'
class = mass storage
subclass = RAID

All of the expanded 'vendor', 'device', 'class' and 'subclass' information is present in the non -v version of the command output. The numbers shown earlier can be used to derive the text information:

class=0x010400
determines the class/subclass lines, using the table from here:
http://fxr.watson.org/fxr/source/dev/pci/pci.c#L1340

card=0xc0351044 chip=0xa5111044
these make up the vendor and device lines, using the list in
/usr/share/misc/pci_vendors (which is derived from the PCIDEVS.TXT
listing).

The last 4 hex digits of the card and chip lines are the vendor ID
while the first 4 are the device ID. The card is often given by
the vendor, while the chip identifies the actual part it uses to
implement functionality. For instance, a Netcomm ethernet NIC may
use a Realtek 8139 chip... so chip gives us the fact it's
essentially a generic Realtek chipset, while the card tells us the
vendor who manufactured the card & perhaps their name for it.

In short, there's no reason to have to transmit all the text names back to any server -- this can all be resolved at the server end,


So, with that one command, we can get a fair amount of hardware information ... but, how to feed that into a proper HTTP request? Storing all of that information would be cool, cause then we could build reports based on device driver / vendor / device / class and subclass ... but that might be a bit heavy to do in an HTTP request, no? I take it email isn't an option, in your case?

Email may be a viable alternative -- one concern with email is that various organisations SMTP servers blast their own disclaimer message and so on across the bottom of all out-going emails, which might complicate parsing of it on the server end.

If you're only encoding purely the numeric details, this would make the information far lighter to transmit than having the whole text blurb. Just the pciconf -l version as-is:

~$ pciconf -l|wc -c
1545

So that's ~1500 bytes. Now strip out all the unnecessary text - the class=, card=, chip=, rev=, hdr=, extra spaces... something like:

mpt0@pci2:5:0: 010000 34358086 00301000 08 00
mpt1@pci2:5:1: 010000 34358086 00301000 08 00
em0@pci3:4:0: 020000 10798086 10798086 03 00
em1@pci3:4:1: 020000 10798086 10798086 03 00

~$ cat pciconf-stripped | wc -c
899

We've nearly halved the size of the information. Now it's still in ASCII, so you could further shave bits off by converting that to binary if you wanted to...


With that amount of information, you'd probably be more inclined to want to use HTTP POST than HTTP GET. A quick glance suggests libfetch(3) doesn't support this; I haven't looked at the code enough to see if adding support for it would be trivial or not.

-Antony
_______________________________________________
freebsd-questions@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • RE: Resolving IRQ conflicts with 4.8
    ... See FBSD FAQ for instructions on how to fix. ... nic and built-in sound card. ... Pnpinfo does not list any PnP devices, so I have to use pciconf -vl. ... Vendor = 'Creative ' ...
    (freebsd-questions)
  • Re: Gotta start somewhere ... how many of us are really out there?
    ... pciconf -l, I'm missing something ... ... Realtek Semiconductor ... card are a combination of vendor and device fields) -- the class, and subclass, of the device. ... ethernet, token ring, etc. ...
    (freebsd-questions)
  • Stand up and be counted - BSDStats Project
    ... pciconf -lv needs to be parsed, this being the hard step, into a string that can be sent via HTTP ... ... this is the hard part because it has to be done as/in a shell script ... ... vendor = 'Intel Corporation' ... report.php would take the IP:getid pair, and store one record per device into the database, from which stats could be very easily generated using standard SQL queries ... ...
    (freebsd-questions)
  • Re: NIC wont DHCP or configure
    ... Thanks for the suggestion - that's beyond my exerptise, but here is the output of pciconf ... vendor = 'Ralink Technology Corp' ... > lists a PCI ID for your NIC that the FreeBSD driver doesn't know ...
    (freebsd-questions)
  • [NT] Sun ONE (iPlanet) Application Server Connector Module Overflow
    ... Sun ONE Application Server. ... Incoming HTTP request URLs are handled by the module ... The vendor was initially contacted via email on 5/22/2002. ...
    (Securiteam)