Announcement

Collapse
No announcement yet.

How To Reverse Engineer A Motherboard BIOS

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • How To Reverse Engineer A Motherboard BIOS

    Phoronix: How To Reverse Engineer A Motherboard BIOS

    Since being let go by Novell last year where he worked on the RadeonHD Linux graphics driver and X.Org support within SuSE Linux, Luc Verhaegen has continued work on his VIA Unichrome DDX driver as well as other X.Org code and he has also become involved with the CoreBoot project that aims to create a free software BIOS for most chipsets and motherboards on the market. Luc has worked on support for flashing the BIOS on ATI graphics cards, native VGA text mode support, and other work to help the CoreBoot project. Today at FOSDEM in Brussels, Luc Verhaegen is about to give a talk on reverse engineering a motherboard BIOS.

    http://www.phoronix.com/vr.php?view=14567

  • #2
    Can you please put the images of the presentation in a more userfriendly way? (ie. click on a large image to get to the next slide?)

    Comment


    • #3
      Or maybe ask libv for the source file of the presentation, e.g. the odt. (If he had not used tex beamer or something like that). Or a pdf.
      Not that I'd understand much of BIOS hacking but good to see libv is still around coding after his via driver stuff kinda broke.

      Comment


      • #4
        PDF has arrived.

        Comment


        • #5
          Awesome, MartjeB, thank you.


          Michael, could you please upload the video somewhere as a real file, so not only youtube or similar? If you don't want the traffic just create a torrent. Thanks

          Comment


          • #6
            Originally posted by bugmenot View Post
            Michael, could you please upload the video somewhere as a real file, so not only youtube or similar? If you don't want the traffic just create a torrent. Thanks
            I may offer direct video files to Premium subscribers, but outside of that I have no plans to.
            Michael Larabel
            http://www.michaellarabel.com/

            Comment


            • #7
              I wish I could use Coreboot on my motherboard (ASUS P4V800D-X with VIA PT880 Ultra chipset). I'm getting many restrictions which I can't break. The worst is that it's PCI-Express 1.0A but it's not compatible with PCI-E 2.0 (althrough there's simmilar motherboard (based on the same chipset) from Asrock and Asrock has put newer BIOS which supports PCI-E 2.0 graphic cards.
              I've got R7xx card which works just fine on that Asrock with newer BIOS (confirmed by many users) but it doesn't work with my ASUS (ASUS get dropped support for that motherboard at early 2007) so it only gets dusty on shelf. The second problem is that I've got 3GB RAM and I can use only 2.5-2.7GB because of AGP aperture (I'm using both AGP R3xx and PCI-E 1.0 R3xx cards on this board now).
              I bet I could get more of my computer with Coreboot but I'm not so ecouraged yet to try it - if something got wrong I don't have EEPROM flasher to flash it. If it would be as safe as I could boot from floppy, usb or hdd to flash it then I would try it.

              Comment


              • #8
                The talk was yesterday, right? When will we see the video?

                Comment


                • #9
                  Originally posted by MartjeB View Post
                  The talk was yesterday, right? When will we see the video?
                  Hopefully tomorrow... The FOSDEM Internet connection is unreliable and at my hotel in Brussels it's also horrificly slow and unstable. I am hoping tomorrow in Germany I will be able to start uploading them, which is about a 3GB file per talk.
                  Michael Larabel
                  http://www.michaellarabel.com/

                  Comment


                  • #10
                    Ok, thanks Michael. You're doing great work .

                    Comment


                    • #11
                      I'm really thinking about give coreboot a try... (or at least to give some information to reverse engineer my motherboards bios) but is there a possibility to try if coreboot will work before flashing it? I suppose qemu will not emulate my real hardware for testing.

                      Motherboard: ASUS P4V800D-X

                      Flashrom said something like that:
                      # flashrom -V
                      flashrom v0.9.1-r706
                      No coreboot table found.
                      Found chipset "VIA VT8237", enabling flash write... OK.
                      This chipset supports the following protocols: Non-SPI.
                      Calibrating delay loop... 828M loops per second, 100 myus = 242 us. OK.
                      ...
                      Probing for PMC Pm49FL004, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0x9d, id2 0x6e
                      Found chip "PMC Pm49FL004" (512 KB, LPC,FWH) at physical address 0xfff80000.
                      ...

                      and superiotool:
                      # superiotool -deV
                      superiotool r3844
                      ...
                      Probing for Winbond Super I/O (init=0x87,0x87) at 0x2e...
                      Found Winbond W83627EHF/EF/EHG/EG (id=0x88, rev=0x54) at 0x2e
                      Register dump:
                      idx 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
                      val 88 54 ff 00 40 00 00 ff 50 04 01 00 f3 21 00 ff
                      def 88 MM ff 00 MM 00 MM RR 50 04 00 RR 00 21 00 00
                      LDN 0x00 (Floppy)
                      idx 30 60 61 70 74 f0 f1 f2 f4 f5
                      val 01 03 f0 06 02 0e 00 ff 00 00
                      def 01 03 f0 06 02 8e 00 ff 00 00
                      LDN 0x01 (Parallel port)
                      idx 30 60 61 70 74 f0
                      val 00 03 78 00 04 3c
                      def 01 03 78 07 04 3f
                      LDN 0x02 (COM1)
                      idx 30 60 61 70 f0
                      val 00 03 f8 04 00
                      def 01 03 f8 04 00
                      LDN 0x03 (COM2)
                      idx 30 60 61 70 f0 f1
                      val 01 02 f8 03 00 40
                      def 01 02 f8 03 00 00
                      LDN 0x05 (Keyboard)
                      idx 30 60 61 62 63 70 72 f0
                      val 00 00 00 00 00 00 00 83
                      def 01 00 60 00 64 01 0c 83
                      LDN 0x06 (Serial flash interface)
                      idx 30 62 63
                      val 00 ff ff
                      def 00 00 00
                      LDN 0x07 (GPIO 1, GPIO 6, game port, MIDI port)
                      idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 f7
                      val 00 02 01 03 30 00 ff ff ff ff ff ff ff 00
                      def 00 02 01 03 30 09 ff 00 00 00 ff 00 00 00
                      LDN 0x08 (WDTO#, PLED)
                      idx 30 f5 f6 f7
                      val 00 ff 00 ff
                      def 00 00 00 00
                      LDN 0x09 (GPIO 2, GPIO 3, GPIO 4, GPIO 5, SUSLED)
                      idx 30 e0 e1 e2 e3 e4 e5 f0 f1 f2 f3 f4 f5 f6 f7
                      val 01 ff ff ff bb 5c 00 ff ff ff 09 ff ff ff ff
                      def 00 ff 00 00 ff 00 00 ff 00 00 00 ff 00 00 00
                      LDN 0x0a (ACPI)
                      idx 30 70 e0 e1 e2 e3 e4 e5 e6 e7 e8 f2 f3 f4 f6 f7
                      val 01 00 01 00 ff 24 00 02 00 10 09 7d 00 00 00 00
                      def 00 00 01 00 ff 08 00 RR 00 00 RR 7c 00 00 00 00
                      LDN 0x0b (Hardware monitor)
                      idx 30 60 61 70 f0 f1
                      val 01 02 90 00 11 33
                      def 00 00 00 00 c1 00
                      Hardware monitor (0x0295)
                      ...

                      lspci -vvnnnxxx

                      BIOS download and specifications

                      Comment


                      • #12
                        Originally posted by bugmenot View Post
                        ...video somewhere as a real file, so not only youtube or similar? ...
                        Just to make your life a bit easier, the following link [1] brings you a nifty greasemonkey script that gets you what you want. I hope it's of value.

                        [1] http://userscripts.org/scripts/show/50771

                        Comment


                        • #13
                          Originally posted by xeros View Post
                          I wish I could use Coreboot on my motherboard (ASUS P4V800D-X with VIA PT880 Ultra chipset). I'm getting many restrictions which I can't break. The worst is that it's PCI-Express 1.0A but it's not compatible with PCI-E 2.0 (althrough there's simmilar motherboard (based on the same chipset) from Asrock and Asrock has put newer BIOS which supports PCI-E 2.0 graphic cards.
                          I've got R7xx card which works just fine on that Asrock with newer BIOS (confirmed by many users) but it doesn't work with my ASUS (ASUS get dropped support for that motherboard at early 2007) so it only gets dusty on shelf. The second problem is that I've got 3GB RAM and I can use only 2.5-2.7GB because of AGP aperture (I'm using both AGP R3xx and PCI-E 1.0 R3xx cards on this board now).
                          I bet I could get more of my computer with Coreboot but I'm not so ecouraged yet to try it - if something got wrong I don't have EEPROM flasher to flash it. If it would be as safe as I could boot from floppy, usb or hdd to flash it then I would try it.
                          I would suggest seeing what Flashrom sees on your board- from what I understand, it takes less to get Flashrom up for a board then Coreboot. Give Flashrom a try- the folks are extremely good, and if something should go wrong (never reboot until it's fixed), they're quite good at finding the issue and getting you up & running again.

                          Comment


                          • #14
                            Vesa, I already use the script.
                            But now it seems that Michael does not even want to use youtube...

                            I just think that it's general stupid to offer a video about linux on a linux webpage not with linux methods (free access for everyone; a free codec/available to look without proprietary software. Of course it's Michaels decision, but I'd like it as it was done two years ago: http://radeonhd.org/?page=fosdem_videos )

                            Comment


                            • #15
                              Originally posted by bugmenot View Post
                              Vesa, I already use the script.
                              But now it seems that Michael does not even want to use youtube...

                              I just think that it's general stupid to offer a video about linux on a linux webpage not with linux methods (free access for everyone; a free codec/available to look without proprietary software. Of course it's Michaels decision, but I'd like it as it was done two years ago: http://radeonhd.org/?page=fosdem_videos )
                              Why not ask him to create a torrent of them and then the people interested in them can download and contribute back to the like minded individuals ?

                              Comment

                              Working...
                              X