StuffIT download

StuffIT, that became Allume, that became digital river is becoming less and less relevant on Mac OS platform. Part of the reason for that, of course, is the policy of the manufacturer, that requires signing up, buying things, etc. It’s nearly impossible to find the free StuffIT expander, for those rare moments when you need it.

In any event, here is a direct link to the StuffIT download page. I had to give out a throw-away e-mail address to get it.

Bus tracing under Windows.

I’ve used USB Sniffer v1.8 to sniff USB bus transactions under Windows. It works, although generates very verbose output (and I have to copy the .log files to a unix box, where grep/sed/awk can actually make them useful. Yes, I know about cygwin, no, command line editing under windows still sucks).

I was told to give a free version of Bus Hound a try, especially for looking at IDE transactions. (BusHound supports alot more then just usb bus, and I was told that it’s quite good, which is a win, since I am thinking about foregoing using USB to IDE adapter, as using USB introduces extra data in bus traces, by wrapping around CDBs.)

P.S. Reading ATA/ATAPI 7 and MMC 6 specs gave me headaches. So I stopped.

Elliptic Cryptography textbook

Looked some more at AACS specs. Realized that I don’t know jack about elliptic cryptography. Asked Yuly Billig what he recommends as a gentle introduction to elliptic cryptography for dummies with limited algebra skills.

He recommended “A Course in Number Theory and Cryptography” by N. Koblitz, QA 241.K672. Carleton library has two copies, so next time I am on campus, I shall sign one out. I guess we’ll find out how much of a dummy with limited algebra skills I am.

It’s all about copious spare time.

Peter Watts’ Books are licensed under CC

Peter Watts, a Canadian Marine Biologist responsible for Vampire Domesticantion lectures (Which you should spend 40 minutes and listen to, and definitely read the little corporate slogans at the corner of each slide) licensed a bunch of his books under CC license, and made them available for download.

Thank you, Peter! I was looking on Amazon, and at 50 to 90 dollars a copy (per softcover), it was not feasible for me to buy them.

If you liked these, consider buying Behemoth: A-Max and Behemoth: Seppuku. They are also good.

Oh, and regarding slogans: in F.E.A.R, on certain levels there were posters that said “Remember, it’s Quantity, Quality, Safety in that order!”

Watching HD content (Part I)


One of my fields of interest is video making. I’ve been eyeing the HD stuff with a bit of curiosity, and pretty much convinced myself to step up to HD production. When I learned that Microsoft released an add-on to Xbox 360, consisting of an HD-DVD drive in an external USB-accessible enclosure, after some penny pinching, I took the plunge and bought it.

HD-DVD (and Blu-Ray) drives are part of the security layer designed by Advanced Access Control System (AACS), a new generation in viewer rights restriction, that successed Content Srambling System (CSS), implemented on DVDs. AACS is non-exclusively licensed by AACS Licensing Authority, and restricts what a buyer (in essence a long term renter of a right to watch) of a HD video disk can do.

Specifically, AACS mandates that a viewer should not be allowed to watch HD output from software player if there is an unencrypted path between the player and the video output device. In essence, if your video card doesn’t support High Defenition Content Protection (HDCP), and if your monitor is not connected to your video card over DVI or HDCP, but over analog or component outputs, your viewing experience will be “degraded”.

“Degradation” in plain terms means that if you have HDCP path to your monitor/TV, you will view content in it’s 1080p (1920×1080 resolution, deinterlaced) glory. If you have DVI outputs, well, you get 1080i (1920×1080, interlaced, but it’s OK, because output is 60Hz, and most decent HD TVs and monitors will do proper deinterlacing, in essence outputing 1080p). If you have component or analog out, you might be lucky, and video studio will let you watch the same video in a “pleb” 960×540 resolution. It is still better then 640×480 (or 720×480 – remember that TV pixels are not square, but are at 4:3 ratio, so depending on what your scaler does, resolution might differ) resolution of a Standard Defenition (SD) video signal, but you paid for 1080p, right? This is up to the studio, however, and very few are liberal enough to allow you even that. So most often you get to view the trailers and extra filler on disk in 540×900, but are not authorized to watch the main feature at all. These rights are both bitmasks on the video streams, and additional rights data in the encrypted XML data files on the disks.

I can think of a couple HD-DVD disks that were released totally unencrypted with no AACS bits. Problem is that there are talks about enforcing ROM Mark by the players. ROM Mark is a special sector that pressed disks have, and burned do not. Idea is that if the disk has ROM mark, it was pressed, and thus must have AACS. If the disk doesn’t have ROM mark, it was burned, and thus it must have unencrypted, uncopyrighted content (again, extra bits in the video stream that player checks for) obtained from, say, consumer video recorder. “Nature’s Colors” and “Running Scared” (EU release) are reportedly unencrypted. Depending on how stupid the implementation of the check is, these titles might stop working.

Ultimately, AACS consortium had a problem. How do you keep “pirates” from “stealing” your HD video, when your “customers” and “pirates” are one and the same? I mean, in the end, someone has to watch the stuff, right? Otherwise, why would anyone buy the videos? Hmmm. A problem indeed.

I have to give HD-DVD manufactureres a credit, however. Remember region protection? The annoying thing, that made you rip and burn the DVDs you bought in Machu Pichu, that told you about the history of the ruins, just so you could watch it? The thing that forced folks from UK wait 6 month to a year before “Lord of the Rings” DVDs would come out in UK? Well, in HD-DVDs it’s gone (Although there are rumors of it coming back in a year or so, but in current iteration nothing supports it). So I bought a bunch of Studio Canal HD-DVD titles from, that are not offered in North America. They play fine. In Blu-Ray world, things are more complicated. There are three regions that break down thusly: USA + Japan, Europe and those thieving Chinese and Russians. So Blu-Ray player sactually don’t let one watch US version of “SpiderMan III” in Europe (And as far as I know, neither HD-DVD nor Blu-Ray made it to Russia or China yet, so there are only Region A and Region B, as far as Blu-Ray is concerned).

To keep those thieving “consumers” from “stealing” HD content, and god forbid end up with unprotected version of it, AACS created a rather complicated scheme.

The Scheme

This is my understanding of AACS, which is very high level, and probably very wrong. No warranties for the next few paragraphs.

Warning! Acronym overload coming right up.

At the lowest level, every element on the disk is encrypted with a Title Key (TK). Element can be the movie itself, trailers, various data files on the video disk, etc. Title Keys are unique to a particular movie, at least to a particular pressing of a disk (So EU version of “Bourne Supremacy” would have different TKs then US version of “Bourne Supremacy”, and then Japanese version of “Bourne Supremacy”.) Title Keys are stored on the disk itself, encrypted with a Volume Unique Key (VUK).

Muselix64’s hack, that made all the news in early January, consisted of a way to decrypt the video elements by taking the user supplied VUK, and using it to extract the TKs, and do decryption.

Now, VUK is generated by the software player. In order to generate the VUK, player has to use the Volume Identificator (VID), stored on the disk, and the Media Key, that is again unique per title, and hash the two together.

Sounds simple, right? But in order to obtain the Volume ID, some magic is involved. Volume ID is 16 bytes, and first 8 bytes can actually be extracted by reading the Burst Cutting Area (BCA) from the disk. No special tricks, really. The remaining 8 bytes can be obtained by reading the copyright data section on disk. Here things get harder.

Media Key is generated by using the Media Key Block (MKB) that is also stored on the disk, with a Device Key unique to the decrypting device (in case of a stand-alone player) or decrypting software (in case of a Home Theater PC).

But before the drive will let you read the data, it will want you to authenticate yourself to it using a key signed by AACS LA.

So here is part section 4.3 of the AACS spec 0.91 on how the drive and the software talk to each-other:

By the drive authentication, the drive and the PC host verify each counterpart is an AACS compliant device that has valid certificate signed by the AACS LA and can sign and verify digital signatures specified in this document. In addition, the drive and the PC host verify each counterpart is not revoked by checking the Host Revocation List (HRL) and the Drive Revocation List (DRL), respectively. To do this, the drive shall store the most recent HRL it has encountered and the PC host shall store the most recent DRL it has encountered. When the drive authentication is successful, the drive and the PC host have a shared Bus Key (BK), and can proceed to the further steps. Figure 4-6 shows the protocol flow for drive authentication and key sharing used in AACS.

AACS Common Specification, version 0.91. Pages 44 onwards document the intricacies of a drive talking to the system, where neither trusts each-other, and both trust things signed by AACS LA key.

So each device or software player has a different Device Key, but they all generate the same Media Key when combined with the Media Key Block.

So we generate a Media Key Block, then we convince the drive that we are for real, get the Volume ID, generate the Media Key, combine the two together, generate the VUK, use VUK to obtain the TKs, and then we decode each element as required, and get to see the Jack Black and Naomi Watts in all high resolution glory.

I swear, only mathematician can be excited by something this complicated. And we haven’t even looked at subset difference, key revocation, and other complicated things, designed to keep movie studios in control.

Content revocation? *blink*.

Yes, if you bought a copy of “Serenity” on HD-DVD (or Blu-Ray), and 4 years from now it is deemed that girls wearing dresses in martial arts scenes (Summer Glau is hawt!) are against the law, AACS LA would be able update the list of keys on the drive and Device Keys, to prevent you from being able to decrypt, and thus watch, content on “Serenity” HD-DVD. Since drive updates it’s list of revocations each time you insert new media into it, they will need to release a bunch of HD-DVDs with updated lists, and wait till you get one, and put it in a drive. Since Device Keys are supposed to cycle every 18 months or so, in about 18 months you will not be able to play back the new disks, since your software player won’t have the Device Keys for them (at this point old disks will still play fine). You will download a “free” software update for your PowerDVD, and it will remove the keys to play back “Serenity”. Easy, right?

Now you understand why I called you a “renter” in the beginning of this post.

At this point it’s almost 4 am, and I got to head to work in less then 5 hours. In next session I will talk about Xbox 360 HD-DVD add-on, and maybe get to cover some neat things you can do by sending CDBs to various devices. Or maybe something completely ifferent.

Cisco Hardware emulator

dynamips is an emulator of various Cisco platforms, that is licensed under GNU GPL, and runs under Windows, Linux, Solaris, MacOS, etc.

Dynamips started off as a MIPS emulator for Cisco 7200, and gradually ended up capable of emulating Cisco 7200 family, Cisco 3600 family, 2600 family (with some exceptions), and Cisco 3725 and 3745. Since it is a hardware emulator, it is bug for bug compatible with the real iron, and IOS on it would have the same bugs as on the physical hardware. Since it supports hypervisor mode, it is possible to run more then one router emulation on a single system, all connected through virtual network. Latest release candidates support packet capture on the virtual interfaces between the routers.

Performance of the emulator is not that great (1 or 2K packers per second, compared to 100s of kpps that actual hardware supports), but it is useful in testing configurations, preparing for Cisco certifications, debugging IOS, etc. I found it while reading up on IOS security, but there are people in both Cisco TAC and preparing/passing CCIE exams, that indicated in 7200emu formus that they use dynamips.

Current PC with a Gig or two of RAM can support a dozen or so router instances.

Based on the information from the developer, we should not expect switch emulation support in the forseeable future, since switches use custom ASICs, so while the main CPUs (MIPS or PPC) that the switches use, are supported, it is very tricky to emulate the power on self-tests of the ASICs (sending packets over loopback, etc), that switches attempt before declaring themselves functional. However 7200 is a bitchin’ platform for pretty much anything, capable of running latest and greatest IOS.

Blog of the author, where newest release candidates of the software are announced. Best place to check to see what bugs got fixed, and what line cards got supported in the latest release.

Forums/Discussion Board for c7200emu, that is moderated by the software’s author.

c7200emu – dynamips project page, detailing more or less up to date list of supported platforms.

Dynagen a dynamips configuration front-end, that allows one easily configure and manage dynamips instances. Currently considered a must have companion to dynamips.

dynamips TODO list, that allowes you to see what the developer is thinking about improving.

P.S. If you lack elf.h, try libelf. In order to build it, you might need GNU sed

Proof that any self-adjoint matrix is diagonalizable.

(Sorry. If you don’t know what this is, please ignore it. It’s not important. Really.)

Setup: If A is self-adjoint, and W is an A-invariant subspace ⇒ W⊥ is A-invariant.

Want: ∀ x∈W⊥, Ax ∈ W⊥〈Ax,w〉 = 0 ∀ w ∈ W ⇐ Orthonormal

Given:〈Ax,w) =〈x,Aw〉 ⇐ Self-Adjoint

Aw∈W ⇐ W is A-invariant

then〈x∈W⊥, Aw∈W〉= 0

Since any self-adjoint matrix is ortho-diagonalizable, if A is self-adjoint, then ∃ an orthonormal basis B∈ℂn made out of eigenvectors such that [A]B

Want: k=n (that is, an orthonormal basis made out of eigenvectors).

Proof by contradiction: Suppose k less then n


W=span(v1, v2, .. vk), A-invariant (this is trivial, but see Appendix A)

then W⊥ is A-invariant, then A is restricted to subspace W⊥

AW⊥: W⊥ → W⊥

Then ∃ v∈W⊥, an eigenvector of AW⊥.

But since AW⊥v = Av, v is an eignevector to of A perpendicular to W.

We assumed that S is maximal, but we ended up with a contradiction, since the set {v1, v2, .. ,vk, v/ ||v||} is an orthogonal set of eigenvectors.

So k must be equal to n. As a result, A is orthodiagonalizable.


HTML is really not suited for doing math.

Appendix A

If λ1≠λ2,〈v1,v2〉must be 0

Here is how: Av1=λ1v1, Av2=λ2v2

Given that: λ1〈v1,v2〉 = 〈λ1v1,v2〉= 〈Av1,v2〉= 〈v1,Av2〉= 〈v1,λ2v2〉=λ2〈v1,v2〉⇒ λ1〈v1,v2〉= λ2〈v1,v2〉

Since λ1≠λ2, 〈v1,v2〉=0



Kino (Part II)

In Part I I’ve translated some Kino songs for Alan.

I’ve realized that I never translated “Группа крови ” (Gruppa Krovi “Blood Type”), even though I promised.

We aim to please here, so here is the translation:

Теплое место, но улицы ждут
Отпечатков наших ног.
Звездная пыль – на сапогах.
Мягкое кресло, клетчатый плед,
Не нажатый вовремя курок.
Солнечный день – в ослепительных снах.

Pleasant (lit: Warm) place, but streets wait
For footprints of our feet.
Stardust is on our high boots.
Soft chair, tartan plaid,
Firing pin not depressed on time.
Sunny day in blinding dreams.

Группа крови – на рукаве,
Мой порядковый номер – на рукаве,
Пожелай мне удачи в бою, пожелай мне:
Не остаться в этой траве,
Не остаться в этой траве.
Пожелай мне удачи, пожелай мне удачи!

Blood type on the sleeve
My sequencial number is on the sleeve.
Wish me luck in fight, wish me
Not to remain on this grass
Not to remain on this grass
Wish me luck, wish me luck!

И есть чем платить, но я не хочу
Победы любой ценой.
Я никому не хочу ставить ногу на грудь.
Я хотел бы остаться с тобой,
Просто остаться с тобой,
Но высокая в небе звезда зовет меня в путь.

And I something to pay with, but I don’t want
A victory at any cost.
I don’t want to put my foot on anyone’s chest
I want to remain with you,
Just remina with you
But sunrise (lit: High star in the sky) is calling me on my way.

Группа крови – на рукаве,
Мой порядковый номер – на рукаве,
Пожелай мне удачи в бою, пожелай мне:
Не остаться в этой траве,
Не остаться в этой траве.
Пожелай мне удачи, пожелай мне удачи!

Translator’s note: Tsoj wrote songs in a rather terse way, with setenses that are not really complete. He is trying to conjure up imagery, and imagery that he is trying to conjure is not necessarily easy to translate into a different language.

Of course Victor Tsoj is dead (in spite of the “Tsoj lives!” graffitti that pops up every once in a while). However Ленинград (Leningrad) did a kind of tribute to Kino’s Gruppa Krovi:

Ð’ магнитофоне играет группа “Кино”,
Ты говоришь мне: “Выключи это гавно”.
Тебя ломает от всякого старья,
Заткнись, это любимая песня моя.

Tape deck is playing group “Kino”
You are telling me “Turn off this shit”
You are getting headache from random old stuff.
Shut up, this is my favorite song.

О, группа крови на рукаве.
О, группа крови на рукаве.

Oh, blood type on the sleeve.
Oh, blood type on the sleeve.

Ты можешь помолчать хотя бы пять минут,
Или пожелай мне удачи в бою.
Группа крови – моя любимая песня,
И когда мне плохо, её я пою:

Can you be quite for just 5 minutes,
Or wish me luck in the (upcoming) fight.
“Grouppa Krovi” is my favorite song,
And when I feel down, I sing it.

О, группа крови на рукаве.
О, группа крови на рукаве.

Ð’ магнитофоне играет группа “Кино”,
Ты говоришь мне: “Выключи это гавно”.
Тебя ломает от всякого старья,
Заткнись, это любимая песня моя.

О, группа крови на рукаве.
О, группа крови на рукаве.

О, группа крови на рукаве.
О, группа крови на рукаве.

О, группа крови на рукаве.
О, группа крови на рукаве.

repeat first verse and reprise as needed.

MP3 is available while it’s available.Translator’s (mine!) notes:
ломает is a conjugated form of ломать – to break. However it is also used as slang for ломка (literally: breakage), which is the general unwellness feeling one gets when one is craving drugs (or coming down from a trip).

On a separate note about drugs…. Don’t do them, m’kay? I don’t really want to project my morals onto anyone else on the interweb, however not too long ago I’ve read a book by Eugenij Roizman (Евгений Ройзман), called “City without Drugs” (Город без наркотиков). Oh, my…. He talks how in the late 1990s city of Ekaterinburg in Russia got flooded with drugs of all kinds, and how he got involved in fighting drug distribution, rehabilitating addicts, and generally fight the lack of care by law enforcement (that was commonly bought off by the drug dealers and distributers).

Most effective method that actually worked was to handcuff the addict to the heating radiator for a month, feeding him, and once the initial craving got broken, getting him into hard physical labor – construction, etc.

Parents that had “connections” and had clue, were arranging, paying even, police to arrest their teenage kids, and jail them for a year. Jail their children! That’s because even though situation in Russian jails is not great, and cases of tuberculosis and hepatitus are common, people with clue realized that chancing that in jail is infinitely better then guaranteed death from OD, AIDS or hep C in 2 – 3 years. “Normal” rehab didn’t work, and people were back to being on the street and addicts in weeks after leaving care. So people without connections were bringing their children to Mr Roizman, into the care of a NGO fund that he created. Many of addicts to whom Mr Roizman helped went on to lead normal lives – finished universities, married, have kids, and now are thankful to him.

Identifying unknown PCI devices

If I ever want to identify unknown device installed in a system….

First I’ll attempt to obtain a PCI device ID:

Under Linux, I’ll use lspci.
Under Windows, I’ll use Unknown Devices (And ignore any other piece of software that claims to be called “Unknown Device Identifier”, and that was stolen from Mike Moniz
Under MacOS X, I’ll use system_profiler
Under Solaris, I’ll use /usr/X11/bin/scanpci -v

Then I’ll reference the PCI device ID with the Canonical list of PCI device IDs from Craig’s site.

At that point I can grep the pcidevs.txt, and learn exciting things.
For example, suppose I wonder what an unknown device in a PowerMac G5 is.

From system profiler I know this:


  Type:	Ethernet Controller
  Bus:	PCI
  Slot:	SLOT-3
  Vendor ID:	0x8086
  Device ID:	0x1010
  Subsystem Vendor ID:	0x8086
  Subsystem ID:	0x1012
  Revision ID:	0x0001

So I do a bit of grepping:

stany@gilva:~/Desktop[01:54 PM]$ grep V.*8086 pcidevs.txt 
V       8086    Intel Corporation
stany@gilva:~/Desktop[01:54 PM]$ grep ^S.*1012 pcidevs.txt 
S       1012    SiS650 GUI 2D/3D Accelerator
S       1012    DFE-580TX 4-Port Server Adapter
S       1012    PRO/1000 MT Dual Port Server Adapter
S       1012    PRO/1000 MF Dual Port Server Adapter
S       1012    PRO/100 S Server Adapter (D)
S       1012    PRO/100 S Server Adapter (D)
S       1012    Realtek AC'97 Audio
S       1012    Intel USB 2.0 Enhanced Host Controller
S       1012    PRO/Wireless 3945ABG Network Connection
stany@gilva:~/Desktop[01:54 PM]$ grep ^D.*1010 pcidevs.txt 
D       0020    LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Multifunction Controller
D       0021    LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
D       1010    SST-128P Adapter
D       1010    Duet 1S(16550)+1P
D       1010    C101/PCI Super Sync Board
D       1010    82546EB Dual Port Gigabit Ethernet Controller (Copper)
D       0003    SG1010 6 Port Serial Switch & PCI to PCI Bridge
stany@gilva:~/Desktop[01:54 PM]$ 

(V stands for Vendor, S for subsystem and D for device ID)

So logic would imply that this is an Intel Corporation PRO/1000 MT Dual Port Server Adapter, specifically 82546EB Dual Port Gigabit Ethernet Controller (Copper).

An excercise for the reader is to identify the following device:
pci bus 0x0006 cardnum 0x04 function 0x00: vendor 0x1106 device 0x3044

VIA Technologies Inc VT6306 VIA Fire II IEEE-1394 OHCI Link Layer Controller


MSI P4N SLI motherboard has a build in nVidea nForce 04 NIC. OpenSolaris doesn’t have driver for it, however a driver can be downloaded from Masayuki Murayama’s Free NIC drivers for Solaris page (Drivers there are SPARC/x86 capable, one might need a functional 64 bit compiler to recompile them for their platform).

His driver will work out of the box, as long as the PCI device ID matches the ones in script. To verify that, one might need to run /usr/X11/bin/scanpci -v and verify that the PCI id matches. In my case, PCI ID was pci10d3,38, which was not in the script, however is in fact an nForce4 ethernet controller.
After I’ve added the ID in the script, driver worked right away.

root@dara:/[07:49 PM]# cd ; /usr/X11/bin/scanpci -v
pci bus 0x0000 cardnum 0x0e function 0x00: vendor 0x10de device 0x0038
 nVidia Corporation MCP04 Ethernet Controller
 CardVendor 0x3462 card 0x7160 (Card unknown)
  STATUS    0x00a0  COMMAND 0x0007
  CLASS     0x06 0x80 0x00  REVISION 0xa2
  BIST      0x00  HEADER 0x00  LATENCY 0x00  CACHE 0x00
  BASE0     0xfe9fc000  addr 0xfe9fc000  MEM
  BASE1     0x0000c481  addr 0x0000c480  I/O
  MAX_LAT   0x14  MIN_GNT 0x01  INT_PIN 0x01  INT_LINE 0x05
  BYTE_0    0x62  BYTE_1  0x34  BYTE_2  0x60  BYTE_3  0x71

root@dara:/[07:50 PM]# modinfo | grep nfo
 Id Loadaddr   Size Info Rev Module Name
 44 feabbbc4   1e50  15   1  mntfs (mount information file system)
141 febc78d4   4768  88   1  devinfo (DEVINFO Driver 1.73)
219 f946c000   fc40 207   1  nfo (nVIDIA nForce nic driver v1.1.2)
root@dara:/[07:50 PM]# dmesg | grep -v UltraDMA

Sat Nov 25 19:50:28 EST 2006
Nov 25 19:38:58 nfo: [ID 306776] nfo0: doesn't have pci power management capability
Nov 25 19:38:58 nfo: [ID 130221] nfo0: nForce mac type 11 (MCP04) (vid: 0x10de, did: 0x0038, revid: 0xa2)
Nov 25 19:38:58 nfo: [ID 451511] nfo0: MII PHY (0x01410cc2) found at 1
Nov 25 19:38:58 nfo: [ID 426109] nfo0: PHY control:0, status:7949<100_BASEX_FD,100_BASEX,10_BASE_FD,10_BASE,XSTATUS,MFPRMBLSUPR,CANAUTONEG,EXTENDED>, advert:de1, lpar:0
Nov 25 19:38:58 nfo: [ID 119377] nfo0: xstatus:3000<1000BASET_FD,1000BASET>
Nov 25 19:38:58 nfo: [ID 716252] nfo0: resetting PHY
Nov 25 19:38:58 gld: [ID 944156] nfo0: nVIDIA nForce nic driver v1.1.2: type "ether" mac address 00:13:d3:5f:53:2f
Nov 25 19:38:58 npe: [ID 236367 kern.notice] PCI Express-device: pci1462,7160@e, nfo0
Nov 25 19:38:58 genunix: [ID 936769 kern.notice] nfo0 is /pci@0,0/pci1462,7160@e
Nov 25 19:38:58 unix: [ID 954099] NOTICE: IRQ21 is being shared by drivers with different interrupt levels.
Nov 25 19:38:58 This may result in reduced system performance.
Nov 25 19:38:58 last message repeated 1 time
Nov 25 19:38:58 last message repeated 1 time
Nov 25 19:38:59 nfo: [ID 831844] nfo0: auto-negotiation started
Nov 25 19:39:04 nfo: [ID 503627 kern.warning] WARNING: nfo0: auto-negotiation failed: timeout
root@dara:/[07:50 PM]#