最近メイン端末にThinkPad L13(Gen1)を使っています.しかしサスペンドからのレジューム時にXが固まってしまうことがよくあり困っています.
今はWayladだとどうだろうとGnome+Waylandにしてみています.が,今度はサスペンド時に固まり電源LEDが点滅.ログも残っていません.
そういえばファームウェアを更新していなかったなと思いつきfwupdを使ってLinux上からファームウェアアップデートをしてみました.
最近メイン端末にThinkPad L13(Gen1)を使っています.しかしサスペンドからのレジューム時にXが固まってしまうことがよくあり困っています.
今はWayladだとどうだろうとGnome+Waylandにしてみています.が,今度はサスペンド時に固まり電源LEDが点滅.ログも残っていません.
そういえばファームウェアを更新していなかったなと思いつきfwupdを使ってLinux上からファームウェアアップデートをしてみました.
最近 ThinkPad L13 という laptop を利用しています。この端末は suspend 状態でバッテリーがもりもり減っていくので最近は hibernation を利用するようにしました。(NVMe SSD をこの端末で初めて使っていますが hibernation からの resume の速度が速く NVMe の効果を体感できました。)
しかし、この端末は hibernation 状態で電源が切れていても蓋を開くと resume してきます。suspend のときもそうでしたがこの端末は液晶画面のラッチがないのでかばんの中などで勝手に resume してバッテリーを無駄にしてしまいます……。
以前ジャンクで入手したThinkPad T430s ですが,外部キーボードを使ったり,壊れたX220 の部品を使ったりで現在メインマシンとして利用しています.
今NVIDIA Optimus が利用できないかと試していますが,うまく行っていません.BIOS Update で治ったという事例を見つけたのでUpdate しました.Update イメージはCD に書き込んでそこから起動しないといけませんが,USBメモリでもうまく行ったのでメモを残しておきます.
※失敗するとマシンが動かなくなる可能性があります.
まずはBIOS のversion を確認します.date が2012年とかなので古そう.
$ sudo dmidecode -t bios|grep -E "Version:|Release Date:" Version: G7ET60WW (2.02 ) Release Date: 09/11/2012 $ sudo lshw | grep "\-firmware" -A10|grep -E "version|date" version: G7ET60WW (2.02 ) date: 09/11/2012
Lenovo のページでBIOSを確認すると, 26 Jun 2019
の Version 2.75
というものが最新のようです.
Windows用の実行ファイルと,起動CD用のisoファイル,それとそれぞれのリリースレターが用意されています.Linux マシンなのでisoファイルの方を入手します.
ダウンロードしたら,チェックサムを確認します.
Checksum Tips
MD5:aa9846fb15114ef18770cc0812188418
SHA1:ace55c1a1fa87f3ca5140ef67d565ff9f863020a
SHA-256:623dc5d0442b3b0e105186901dc403c911717d4f7998223593b93e66afdbcd93
$ sha256sum ~/Downloads/g7uj28us.iso 623dc5d0442b3b0e105186901dc403c911717d4f7998223593b93e66afdbcd93 /home/matoken/Downloads/g7uj28us.iso
$ isoinfo -d -i ./g7uj28us.iso CD-ROM is in ISO 9660 format System id: Volume id: G7ETB5US Volume set id: Publisher id: Data preparer id: Application id: NERO BURNING ROM Copyright File id: Abstract File id: Bibliographic File id: Volume set size is: 1 Volume set sequence number is: 1 Logical block size is: 2048 Volume size is: 16566 El Torito VD version 1 found, boot catalog is in sector 20 Joliet with UCS level 3 found NO Rock Ridge present Eltorito validation header: Hid 1 Arch 0 (x86) ID 'NERO BURNING ROM' Key 55 AA Eltorito defaultboot header: Bootid 88 (bootable) Boot media 4 (Hard Disk Emulation) Load segment 7C0 Sys type 6 Nsect 1 Bootoff 1B 27 $ isoinfo -l -i ./g7uj28us.iso Directory listing of / d--------- 0 0 0 2048 Jun 13 2019 [ 21 02] . d--------- 0 0 0 2048 Jun 13 2019 [ 21 02] ..
この iso ファイルを CD に書き込んで起動すればいいはずですが,メディアが手元にありません.
iso ファイルによってはUSBメモリに書き込むだけで起動USBメディアになるものもあるので試してみましたが起動できませんでした.
どうにかならないかなーと探すと以下の記事を見つけました.
geteltorito
というPerl Script でイメージを変換した後,USBメモリに書き込むことで ThinkPad の BIOS Update ができるようです.
この記事中ではScript 開発者のページから入手していますが,Debian では genisoimage
pkg に含まれているのでこれを使いました.
$ apt-file search geteltorito genisoimage: /usr/bin/geteltorito genisoimage: /usr/share/doc/genisoimage/README.geteltorito genisoimage: /usr/share/man/man1/geteltorito.1.gz $ sudo apt install genisoimage
$ geteltorito /usr/bin/geteltorito [-hv] [-o outputfilename] cd-image Script will try to extract an El Torito image from a bootable CD (or cd-image) given by <cd-image> and write the data extracted to STDOUT or to a file. -h: This help. -v: Print version of script and exit. -o <file>: Write extracted data to file <file> instead of STDOUT.
$ sudo dmesg -He|tail $ sudo fdisk -l /dev/sdb $ sudo wipefs -a /dev/sdb
$ geteltorito ./g7uj28us.iso | sudo dd of=/dev/sdb bs=1M oflag=dsync status=progress Booting catalog starts at sector: 20 Manufacturer of CD: NERO BURNING ROM Image architecture: x86 Boot media type is: harddisk El Torito image starts at sector 27 and has 65536 sector(s) of 512 Bytes [sudo] password for matoken: 33218560 bytes (33 MB, 32 MiB) copied, 10 s, 3.2 MB/sImage has been written to stdout .... 9+178 records in 9+178 records out 33554432 bytes (34 MB, 32 MiB) copied, 10.3254 s, 3.2 MB/s
Debian pkg に含まれているScript のversion とsite で配布されているversion は0.5 と0.6 と少し違ったので念の為両方で変換を掛けて比較してみましたが結果は同じでした.
$ wget http://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito/geteltorito $ chmod u+x ./geteltorito $ ./geteltorito -v Version: 0.6 $ ./geteltorito -o ./g7uj28us.img ./g7uj28us.iso $ geteltorito -o ./g7uj28us.img-pkg ./g7uj28us.iso $ diff -s ./g7uj28us.img ./g7uj28us.img-pkg Files ./g7uj28us.img and ./g7uj28us.img-pkg are identical
ということで,書き込んだUSBメモリで起動してBIOS update はうまく行きました.
$ sudo dmidecode -t bios|grep -E "Version:|Release Date:" Version: G7ETB5WW (2.75 ) Release Date: 06/10/2019
忘れがちだけど結構脆弱性の修正やmicrocode のアップデートも入っていたのでちゃんと当てないといけないですね…….
$ dpkg-query -W genisoimage coreutils util-linux dmidecode lshw coreutils 8.30-3 dmidecode 3.2-1 genisoimage 9:1.1.11-3+b2 lshw 02.18.85-0.2 util-linux 2.33.1-0.1 $ hostnamectl | egrep 'Operating System|Architecture' Operating System: Debian GNU/Linux 10 (buster) Architecture: x86-64
NotePC を AC電源で利用する場合フル充電しっぱなしだとバッテリの寿命が短くなります.フル充電せずに手前で充電を止めるようにする方法のメモです.
#いつも持ち運ぶために100%にしたあと設定を覚えてなくてそのままにしてしまうのでメモ><
$ sudo apt install tlp
% sudo tlp-stat -b
--- TLP 0.7 --------------------------------------------
+++ ThinkPad Extended Battery Functions
tp-smapi = active
tpacpi-bat = inactive (kernel module 'acpi_call' not installed)
+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/devices/platform/smapi/BAT0/manufacturer = SANYO
/sys/devices/platform/smapi/BAT0/model = 42T4XXX
/sys/devices/platform/smapi/BAT0/manufacture_date = 2010-08-14
/sys/devices/platform/smapi/BAT0/first_use_date = 2010-09-22
/sys/devices/platform/smapi/BAT0/cycle_count = 277
/sys/devices/platform/smapi/BAT0/design_capacity = 57720 [mWh]
/sys/devices/platform/smapi/BAT0/last_full_capacity = 27340 [mWh]
/sys/devices/platform/smapi/BAT0/remaining_capacity = 22140 [mWh]
/sys/devices/platform/smapi/BAT0/remaining_percent = 81 [%]
/sys/devices/platform/smapi/BAT0/remaining_running_time_now = not_discharging [min]
/sys/devices/platform/smapi/BAT0/remaining_charging_time = not_charging [min]
/sys/devices/platform/smapi/BAT0/power_now = 0 [mW]
/sys/devices/platform/smapi/BAT0/power_avg = 0 [mW]
/sys/devices/platform/smapi/BAT0/start_charge_thresh = 96 [%]
/sys/devices/platform/smapi/BAT0/stop_charge_thresh = 100 [%]
/sys/devices/platform/smapi/BAT0/force_discharge = 0
% sudo tlp setcharge 75 85 BAT0
Setting temporary charge thresholds for BAT0:
stop = 85
start = 75
もしバッテリが複数ある場合は BAT0, BAT1 のようになるはず.
外で使う前にフル充電したい場合など.
% sudo tlp fullcharge
Setting temporary charge thresholds for BAT0:
stop = 100
start = 96