{"id":120,"date":"2010-04-30T20:49:00","date_gmt":"2010-04-30T20:49:00","guid":{"rendered":"http:\/\/zensonic.dk\/?p=120"},"modified":"2017-04-09T10:03:56","modified_gmt":"2017-04-09T10:03:56","slug":"updating-system-firmware-on-an-ibm-thinkpad-t43-using-pxeboot","status":"publish","type":"post","link":"https:\/\/zensonic.dk\/?p=120","title":{"rendered":"Updating system firmware on an IBM Thinkpad T43 using pxeboot"},"content":{"rendered":"<p>Recently I got my hands on an IBM Thinkpad T43 without disk drive and cdrom (perfectly OK machine thrown out, apparently for no reason). I decided to update the firmware to the newest version before considering buying replacement parts for it.<\/p>\n<p>So how do you update the firmware on an IBM Thinkpad without floppy or cdrom? You netboot it ofcourse. Needless to say these instructions might also work for other models. And finally: <span style=\"color: #ff0000;\">If you break your Thinkpad following these instructions I have no liability and you get to thank yourself and keep both parts!<\/span><\/p>\n<p>With the standard disclaimer out of the way, lets start.<\/p>\n<p>First I went to the excelent site<a href=\"http:\/\/www.thinkwiki.org\/wiki\/BIOS_Upgrade_Downloads\"> thinkwiki.org<\/a> where I located the latest bios. I then downloaded bios version 1.29 from <a href=\"http:\/\/www-307.ibm.com\/pc\/support\/site.wss\/document.do?lndocid=MIGR-59379\">Lenovo<\/a> (Notice that two versions of the T43 exists and they are incompatible!)<\/p>\n<p>I turned my attention to my linux server (ubuntu) and configured the dhcpd, tftpd and inetd to allow me to netboot using pxe. First off I installed the four needed utilities.<\/p>\n<pre style=\"padding-left: 30px;\">sudo apt-get install openbsd-inetd tftpd-hpa  dhcp3-server cabextract<\/pre>\n<p>When PXE booting a computer, it broadcasts for a lease from a DHCP server on the net. I configured my dhcpd server with the following besides the normal dhcpd options.<\/p>\n<pre style=\"padding-left: 30px;\">sudo vi \/etc\/dhcp3\/dhcpd.conf\r\n...\r\n...\r\n       host t43 {\r\n                hardware ethernet 00:11:25:d6:ef:4b;\r\n                fixed-address 192.168.1.35;\r\n                filename \"pxelinux.0\";\r\n      }\r\n...\r\n...<\/pre>\n<p>You ofcourse have to change the hardware ethernet to the mac address of your Thinkpads ethernetcard. I saved the file and restarted dhcpd with<\/p>\n<pre style=\"padding-left: 30px;\">\/etc\/init.d\/dhcp3-server restart<\/pre>\n<p>Next I configured inetd:<\/p>\n<pre style=\"padding-left: 30px;\">vi \/etc\/inetd.conf\r\ntftp  dgram  udp  wait  root  \/usr\/sbin\/in.tftpd -v -v -v -s \/usr\/lib\/syslinux<\/pre>\n<p>Saved and restarted inetd<\/p>\n<pre style=\"padding-left: 30px;\">sudo \/etc\/init.d\/openbsd-inetd<\/pre>\n<p>I then configured pxe with a config file that pxelinux.0 expects (your mac address will vary ofcourse) .<\/p>\n<pre style=\"padding-left: 30px;\">mkdir -p \/usr\/lib\/syslinux\/pxelinux.cfg\r\nvi \/usr\/lib\/syslinux\/pxelinux.cfg\/01-00-11-25-d6-ef-4b\r\nDEFAULT t43firmware\r\nLABEL t43firmware\r\n        kernel memdisk\r\n        append vga=normal initrd=flash\/t43\/70UJ29US.IMG --\r\nPROMPT 1\r\nTIMEOUT 0<\/pre>\n<p>Almost there. Next up, get the flash image ready<\/p>\n<pre style=\"padding-left: 30px;\">mkdir -p \/usr\/lib\/syslinux\/flash\/t43\r\ncd \/usr\/lib\/syslinux\/pxelinux.cfg\r\nwget http:\/\/download.lenovo.com\/ibmdl\/pub\/pc\/pccbbs\/mobiles\/70uj29us.exe<\/pre>\n<p>That got you an windows cabinetfile. Extract the firmware from that<\/p>\n<pre style=\"padding-left: 30px;\">cabextract -F 70UJ29US.IMG 70uj29us.exe\r\nExtracting cabinet: 70uj29us.exe\r\n  extracting 70UJ29US.IMG\r\nAll done, no errors.<\/pre>\n<p>I then powered up the T43. It booted over PXE<\/p>\n<p><a href=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010445.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-126\" title=\"Booting over PXE\" src=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010445-1024x768.jpg\" alt=\"\" width=\"450\" height=\"337\" \/><\/a><\/p>\n<p>I pressed return and the flash program started:<\/p>\n<p><a href=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010446.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-127\" title=\"Flash program starting, when booting over PXE\" src=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010446-1024x768.jpg\" alt=\"\" width=\"450\" height=\"337\" \/><\/a><\/p>\n<p>I accepted the (many) warnings and disclaimers&#8230;.. and<\/p>\n<p>&#8230;. nothing happened! It just hung. I thought I had fried my newly aquired Thinkpad. I powered it off and on again just to see that it still worked, and that I was on the same BIOS level. Hmm, now what? It nearly worked, but still no cigar. I decided to take it one level further, doing it all by hand:<\/p>\n<p>Mount the image file by hand using the loop driver:<\/p>\n<pre style=\"padding-left: 30px;\">sudo mkdir \/floppy\r\nsudo mkdir \/floppy1\r\nsudo mount -o loop \/usr\/lib\/syslinux\/flash\/t43\/70UJ29US.IMG \/floppy<\/pre>\n<p>Get a standalone freedos boot image (called balder) from the nice guys at <a href=\"http:\/\/www.freedos.org\/freedos\/files\/\">freedos.org<\/a>:<\/p>\n<pre style=\"padding-left: 30px;\">cd \/usr\/lib\/syslinux\/flash\/t43\/\r\nwget http:\/\/www.ibiblio.org\/pub\/micro\/pc-stuff\/freedos\/files\/distributions\/\\\\\r\n     unofficial\/balder\/balder10.img\r\nsudo mount -o loop \/usr\/lib\/syslinux\/flash\/t43\/balder10.img \/floppy1<\/pre>\n<p>Remove a lot of files from balder10.img and copy files over from the IBM flash disk.<\/p>\n<pre style=\"padding-left: 30px;\">sudo rm \/floppy1\/{display.exe,edit.exe,dosfsck.exe,zip.exe,unzip.exe,\\\\\r\n                  defrag.exe,fdisk.exe,chkdsk.exe,cwsdpmi.exe,keyboard.sys,\\\\\r\n                  format.exe,subst.exe,edit.hlp,country.sys,keybrd2.sys,\\\\\r\n                  diskcopy.exe,edlin.exe,replace.exe,fdiskpt.ini,debug.com,\\\\\r\n                  mode.com,shrdrv86.exe,xcopy.exe,move.exe,keyb.exe,tree.com,\\\\\r\n                  fdisk.ini,diskcomp.com,ctmouse.exe,more.exe,shsucdx.com}\r\nsudo cp \/floppy\/{\\$0199000.fl1,06d*,chkbmp.exe,flash2.exe,lcreflsh.bat,logo.bat,\\\\\r\n                 logo.scr,phlash16.exe,prepare.exe,prod.da*,qkflash.exe,\\\\\r\n                 readme.txt,tpchks.exe,updtflsh.exe,updtmn.exe,userint.exe,\\\\\r\n                 utilinfo.exe} \/floppy1\r\n\r\n# rename the flash file\r\nsudo mv \\$0199000.fl1 flash.img\r\n\r\n# unmount floppy\r\nsudo umount \/floppy1\/<\/pre>\n<p>Edit the pxe config file (your mac address will vary ofcourse) to use the balder\/freedos image file instead of the Lenovo flash disk.<\/p>\n<pre style=\"padding-left: 30px;\">vi \/usr\/lib\/syslinux\/pxelinux.cfg\/01-00-11-25-d6-ef-4b\r\nDEFAULT t43firmware\r\nLABEL t43firmware\r\n        kernel memdisk\r\n        append vga=normal initrd=flash\/t43\/balder10.img --\r\nPROMPT 1\r\nTIMEOUT 0<\/pre>\n<p>Reboot the T43 machine. Boot over PXE, single step (F8) the freedos start. Make sure you do NOT use EMS or HIMEM. After a brief period of time you should find yourself in an dos prompt, where you run<\/p>\n<pre style=\"padding-left: 30px;\"><div class=\"codesnip-container\" >A:\\phlash16.exe flash.img<\/div><\/pre>\n<p>The system should flash nicely and you should be all done within a minute:<\/p>\n<p><a href=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010448.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-128\" title=\"Flashed the BIOS\" src=\"https:\/\/zensonic.dk\/wp-content\/uploads\/30042010448-1024x768.jpg\" alt=\"\" width=\"450\" height=\"337\" \/><\/a><\/p>\n<p>Not for the faint of hearted, but I never promised that <img src='https:\/\/zensonic.dk\/wp-includes\/images\/smilies\/icon_wink.gif' alt=';-)' class='wp-smiley' \/> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I got my hands on an IBM Thinkpad T43 without disk drive and cdrom (perfectly OK machine thrown out, apparently for no reason). I decided to update the firmware to the newest version before considering buying replacement parts for it. So how do you update the firmware on an IBM Thinkpad without floppy or [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-120","post","type-post","status-publish","format-standard","hentry","category-hardware"],"_links":{"self":[{"href":"https:\/\/zensonic.dk\/index.php?rest_route=\/wp\/v2\/posts\/120"}],"collection":[{"href":"https:\/\/zensonic.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zensonic.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zensonic.dk\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/zensonic.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=120"}],"version-history":[{"count":0,"href":"https:\/\/zensonic.dk\/index.php?rest_route=\/wp\/v2\/posts\/120\/revisions"}],"wp:attachment":[{"href":"https:\/\/zensonic.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zensonic.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zensonic.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}