Hlavní navigace

3G vestavěné trápení aneb ThinkPad BIOS update

13. 8. 2012 19:26 (aktualizováno) Ladislav Nešněra

Pointa místo úvodu: Příčinou nefunkčního 3G modemu (Ericsson F5521gw) se ukázal chybný BIOS. Následující text je o identifikaci problému a jeho řešení – update BIOSu na notebooku Lenovo bez CD-ROM

ThinkPad E320 (1298–82G) se zmíněný modem představuje jako Lenovo F5521gw. Tento modul je v kdejakém kusu HW a uvádí se, že má podporu v jádře. Navzdory tomu se očekávané out-of-box fungování nedostavilo.

Problém se projevil tak, že v nm-appletu byla nedostupná položka „Enable Mobile Broadband“. Všechny pokusy o zapnutí zůstávaly bez odezvy, či v lepší případě končily hláškami ve smyslu „inicializace zařízení se nezdařila“. Neb jsem modem fungovat nikdy neviděl (Widle šly pryč bez spuštění a jsem tudíž zvědav na vývoj v této věci), zkusil jsem nabootovat místo do Fedory do Ubuntu, jenž mělo být údajně bez problémů. Chování bylo stejné.
Pro ověření na nižší úrovni jsem použil minicom. Po názvu zařízení jsem pátrat nemusel, natrefil jsem na něj v nějaké diskuzi. Spustil jsem jej tedy jako

# minicom -D /dev/ttyACM0

a pro jistotu si AT příkazem ate1 zapnul zobrazování výpisů a zkontroloval, zda komunikuji s požadovaným zařízením. Odezva F5521gw na příkaz ati mě o tom ujistila. Následovalo at+cind=? pro výpis seznamu indikátorů a at+cind? pro jejich hodnoty. Klíčovým byl druhý údaj. Signál na nule poukazuje buď na problém s anténou nebo vypnutý modem. Optimisticky jsem se přiklonil k druhému vysvětlení.
Pro tento případ jsem v diskuzích narazil na podivnou radu – jít do BIOSu a vrátit jej do továrního nastavení. Ač nerad (nesnáším Fn na pozici levého Ctrl či když se Fx klávesy chovají jako multimediální), provedl jsem. Bez efektu. Na stránkách Lenova byl publikován novější BIOS, který mi nakonec problém vyřešil. Dále tedy návod, jak upgrade provést na zařízení bez Widlí a CD-ROM

  1. ze stránek podpory firmy Lenovo stáhnout po zadání kódu produktu (u mě 1298–82G) update BIOSU. Zvolte „Bootable CD“ a nenechte se odradit zábavným dovětkem „for Windows 7..“. tj. 8nuj09uc.iso pro verzi 1.17. (jiné verze jsou dostupné pod odkazem „Learn More“)
  2. stažený *.iso převést na *.img, ze kterého lze pomocí Grubu2 nabootovat
    1. návodu na ThinkWiki doporučuji stáhnout skript geteltorito (jeví se mi to snazší, než kompilovat utilitku isobar)
    2. soubor ulože do stejného adresáře jako máte *.iso a nastavte jej jako spustitelný.
    3. převeďte na img příkazem $ ./geteltorito -o biosUpdate.img 8nuj09uc.iso
  3. máte-li chuť zkontrolovat si výsledný biosUpdate.img (zdroj)
    1. nechte si vypsat pár informací $ fdisk -l biosUpdate.img
      17 MB, 17825792 bytes
      64 heads, 32 sectors/track, 17 cylinders, total 34816 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00000000
      
                Device Boot      Start         End      Blocks   Id  System
      /biosUpdate.img1   *          32       34815       17392    4  FAT16
    2. dle velikosti sektorů a pozice start-bloku upravte příkaz # mount biosUpdate.img /mnt -t auto -o loop,offset=$((32*512))
    3. pokud vidíme něco podobného, můžeme spokojeně image zase pomocí umount odpojit
  4. vytvořte si bootovací USB flash disku. Vzhledem k univerzálnosti použit a kapacitě flešek preferuji variantu multibootu.
    1. USB zasuneme a příkazem mount ověříme, jak byl bylo připojeno (obvykle  /dev/sdb1)
    2. není-li, naformátujeme na FAT např. # mkfs.vfat -n <vášNázevUSB> /dev/sdb1 (chcete-li jen změnit název a zachovat obsah, použijte  # mlabel -i /dev/sdb1 ::<vášNázevUSB>
    3. neb se mi Grub2 odmítl nainstalovat na systémem namapovanu cestu, doporučuji zařízení odpojit a provést namapování ručně # mount /dev/sdb1 /mnt
    4. nainstalujte Grug2# grub2-install --no-floppy –root-directory=/mnt /dev/sdb ( /dev/sdb je opravdu bez jedničky na konci)
    5. vytvořte položku v bootovacím menu
      1. vytvořením souboru /mnt/boot/grub2/grub.cfg
      2. který bude obsahovat (cesty jsou vysvětleny níže)
        menuentry "Lenovo BIOS update" {
            linux16 /boot/grub2/memdisk
            initrd16 /boot/iso/biosUpdate.img
        }
  5. finální úpravy USB (soubory neukládám do kořenového adresáře, aby se nepletly s případným dalším obsahem na USB)
    1. ze syslinuxu nám přijde vhod memdisk$ cp /usr/lib/syslinux/memdisk /mnt/boot/grub2
      • na Fedoře to je /usr/share/syslinux/memdisk
      • nenaleznete-li na svém počítači soubor memdisk, bude potřeba doinstalovat balíček syslinux
    2. do ručně vytvořené složky /mnt/boot/iso nakopírujeme soubor biosUpdate.img (mám v ní liveCD různých distribucí)
  6. hotové USB doporučuji vyzkoušet např. pomocí VirtualBoxu (viz. zde), ať v případě dolaďování nemusíte opakovaně bootovat

Teď již zbývá jen nabootovat z flešky a upgradovat BIOS dle instrukcí Lenova. Pro jistotu jsem provedl i reset do výchozího nastavení, ale možná to nebylo nutné. Po ověření funkčnosti mobilního připojení jsem volby BIOSu upravil dle svého a 3G stále funguje. Upgrade mě zbavil nejen nepříjemně trčícího „palce“ Huawei E1750, ale přinesl i zrychlení přípojení.

                                                Down      Up
Ericsson F5521gw    18. 7. 2012 16:31   9,51    2,71
Ericsson F5521gw    18. 7. 2012 16:33   8,73    2,92
Huawei E1750        18. 7. 2012 16:37   3,76    1,48
Huawei E1750            18. 7. 2012 16:39   3,62    1,63

Nakonec se podělím o slastný pohled na nm-applet

Ještě dvě poznámky:

  1. následně panikařící kernel přisuzuji právě upgrade BIOSU, neb souvisel se síťovinami (pomohlo přeinstalování kernelu)
  2. připojení je nyní rychlejší, ale zdá se mi méně stabilní – projevuje sekáním videí na Youtube či v iVysílání ČT, ale nechci dělat předčasné závěry

Dodatky:

  1. závěrečné poznámky souvisely – obojí bylo chybou v kernelu. Bezproblémová byla verze 3.3.4–5.fc17.x86_64 (instalačka Fedory 17). Pak tam byl nějaký renonc a od 3.5.0–2.fc17.x86_64 je to zase OK
  2. opět se mi stalo, že modem nešlo aktivovat, ale tentokrát stačila finta s defaultním nastavením BIOSu