画面を閉じてスリープ状態にすると充電が速くなるようだ。Innergieの60W充電器が手に入ったのでACアダプタ側に接続するタイプの電流計(本体側のType-Cコネクタに接続してはINとOUTが逆なので測れなかった)を挟んで眺めてみたら、起動状態よりスリープ状態の方が流れる電流が多かった。
再び試してみたら変わらなかった。
Just another WordPress site
画面を閉じてスリープ状態にすると充電が速くなるようだ。Innergieの60W充電器が手に入ったのでACアダプタ側に接続するタイプの電流計(本体側のType-Cコネクタに接続してはINとOUTが逆なので測れなかった)を挟んで眺めてみたら、起動状態よりスリープ状態の方が流れる電流が多かった。
再び試してみたら変わらなかった。
自宅のネットワークにアクセスできるようにIPSec/L2TPのVPNサーバーを使っていた。strongswanとxl2tpdを利用している。
Debian JessieだったかStretchで使っていた設定ファイルをArch Linux ARMにそのまま移した。最新版では使えなくなった設定があるのでsudo journalctl -fで出てくるエラーをつぶして、サービスが動くようにした。
しかし、パケットが通らない。サーバーからpingを打っても、Destination Host Unreachableだった。
LANのip address rangeが192.168.0.0/24で、xl2tpdのip range = 192.168.0.200-192.168.0.220 から 192.168.2.200-192.168.2.220 sudo iptables に変えた。(local ipも合わせる)そして、sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
でNAT通すようにしたら、LANにアクセスできるようになった。
しかし、昔の設定が使えないのは謎なので、さらに調べていたら、どうもルーティングテーブルがおかしい。ip rangeを192.168.0.0/24にしている状態で、VPN接続を行う。そして、ip route get 192.168.0.200を実行すると
$ ip route get 192.168.0.200 192.168.0.200 dev eth0 table 220 src 192.168.0.25 uid 1001 cache
このようになる。
なんかよくわからないtable 220にppp0ではなくeth0経由で通信しようするように設定されている。とりあえず、ip route flush table 220(違ったかも)でルーティングテーブルのこのエントリを消すことで正しくVPNで接続したiPhoneにpingが通るようになった。
https://wiki.strongswan.org/issues/248
If I let charon (and not updown.sh) install the routes (install_routes=yes), this is what happens (10.32.32.200 is the ‘other side’):
とあるので、install_routesというキーワードをヒントに検索したら、次のような設定があることが判明した。
https://wiki.strongswan.org/projects/strongswan/wiki/StrongswanConf
charon.install_routes | yes | Install routes into a separate routing table for established IPsec tunnels. If disabled a more efficient lookup for source and next-hop addresses is used since 5.5.2. |
デフォルトではyesになっているのをnoに変更したら直った。設定ファイルは /etc/strongswan.d/charon.confにあった。
これで、なんとか使えるようになった。
Arch Linux ARMとRaspberry Pi 3で使おうとしたが、以下のようなエラーが出て使えなかった。
$ irrecord --device=/dev/lirc0 MyRecord Using driver devinput on device /dev/lirc0 Driver `devinput' not found (wrong or missing -U/--plugindir?). accent alsa_usb asusdh atilibusb atwf83 audio_alsa awlibusb bte bw6130 commandir creative creative_infracd default dfclibusb dsp dvico ea65 file ftdi ftdix girs i2cuser irlink irtoy livedrive_midi livedrive_seq logitech macmini mouseremote mouseremote_ps2 mp3anywhere mplay mplay2 pcmak pinsys pixelview samsung sb0540 silitek sonyir srm7500libusb tira tira_raw udp uirt2 uirt2_raw usb_uirt_raw usbx zotac
/etc/lirc/lirc_options.confのdriverをからdevinputからdefaultに変更すると使えるようになる。
# These are the default options to lircd, if installed as # /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8) # manpages for info on the different options. # # Some tools including mode2 and irw uses values such as # driver, device, plugindir and loglevel as fallback values # in not defined elsewhere. [lircd] nodaemon = False driver = default device = auto output = /var/run/lirc/lircd pidfile = /var/run/lirc/lircd.pid plugindir = /usr/lib/lirc/plugins permission = 666 allow-simulate = No repeat-max = 600 #effective-user = #listen = [address:]port #connect = host[:port] #loglevel = 6 #release = true #release_suffix = _EVUP #logfile = ... #driver-options = ...
cpuinfoとopenssl speedの結果から見るに、aesアクセラレーターは無いっぽい?あるいは認識されていないのか。パフォーマンスも案の定32bitと比べて悪い様だ。これは、A53が64bit命令を実行できるようにしているのはbig.LITTLEとして使っている場合、突然パフォーマンスコアから省電力コアに切り替わる際に64bit命令が実行できなくて不正な命令になってしまうのを防ぐためで、高速に実行できるかどうかは考えていないためだったはず。
[alarm@alarm ~]$ cat /proc/cpuinfo processor : 0 BogoMIPS : 38.40 Features : fp asimd evtstrm crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 1 BogoMIPS : 38.40 Features : fp asimd evtstrm crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 2 BogoMIPS : 38.40 Features : fp asimd evtstrm crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 3 BogoMIPS : 38.40 Features : fp asimd evtstrm crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 [alarm@alarm ~]$ openssl speed aes-128-cbc Doing aes-128 cbc for 3s on 16 size blocks: 4187159 aes-128 cbc's in 2.99s Doing aes-128 cbc for 3s on 64 size blocks: 1135520 aes-128 cbc's in 2.99s Doing aes-128 cbc for 3s on 256 size blocks: 291828 aes-128 cbc's in 2.99s Doing aes-128 cbc for 3s on 1024 size blocks: 73494 aes-128 cbc's in 2.98s Doing aes-128 cbc for 3s on 8192 size blocks: 9211 aes-128 cbc's in 2.99s Doing aes-128 cbc for 3s on 16384 size blocks: 4600 aes-128 cbc's in 2.99s OpenSSL 1.1.0i 14 Aug 2018 built on: reproducible build, date unspecified options:bn(64,64) rc4(char) des(int) aes(partial) idea(int) blowfish(ptr) compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DVPAES_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/etc/ssl\"" -DENGINESDIR="\"/usr/lib/engines-1.1\"" -Wa,--noexecstack -D_FORTIFY_SOURCE=2 -march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128 cbc 22406.20k 24305.44k 24985.94k 25254.31k 25236.29k 25206.15k
distccを使って、AURパッケージをビルドしようとしていた。しかし、何故かローカルでビルドされて、どうやってもスレーブにコンパイルが振られなかった。結局のところ、-march=nativeがgccの引数に与えられていたのが原因だった模様だった。menuselectでBUILD_NATIVEを無効にすることでビルドすることができた。Ryzen 7 1700を積んでいるPCではHyper-Vを使って8コア割り当てて、仮想マシン上でArch Linuxを走らせて、distccdを動かしている。x86_64 CPUを8コア利用することビルドは10分以内で終わった。configureに2,3分、圧縮にも同じくらいかかっているので、コンパイル自体は5,6分くらいだろうか。Raspberry Pi 3だけでビルドすると20分はかかった。ヒートシンクを取り付けていないので加熱でサーマルスロットリングがかかって遅かったかもしれない。
こちらで紹介されているAURパッケージを入れる。/etc/conf.d/distccd
を編集して、ローカルネットワークからジョブを送り込めるようにする。そして、 sudo systemctl start distccd-armv7h
を実行して、distccdを走らせておく。
~/distccd/hosts
192.168.0.XX:3635,lzo,cpp
trizen -S asteriskを実行した。
pkgbuildを編集するか聞かれたら編集するを選んで、下記のようにする。
build() { cd ${pkgname}-${pkgver} ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --sbindir=/usr/bin make menuselect menuselect/menuselect --disable BUILD_NATIVE make -j12 }
あとは適当に続行すればよい。
追記:日本語音声を入れ忘れていた。
make menuselect menuselect/menuselect --enable CORE-SOUNDS-JA-WAV --enable CORE-SOUNDS-JA-ULAW make -j4
ArchLinux ARMのRaspberry Pi向けのカーネルには、iSCSIターゲットのカーネルモジュールが用意されているようだ(tar.xzの中身を見たら入っていた)。Raspbianを使わないでArchを使えば簡単にiSCSIターゲットを作れるかもしれない。
ふと、.bashrcを見てみたら、次のような記載があった。
# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
環境変数の設定をするためにcrontabでスクリプトを走らせるときに.bashrcを読み込んでいたが、無駄なことをしていたようだ。
サーバーが止まっても大丈夫なようにブログをGitHub Pagesにミラーするようにした。
pushしてもなかなか反映されなかったが、このページを参考に空っぽのコミットをpushしたら反映された。
opensslクレートをGNU ABIで使おうとして苦労した。
MSVC ABIの場合は、特に苦労せず、すんなりとビルドできて、実行もできた。
choco install msys2で入れた。chocolatey使っていなければ、普通にMSYS2をダウンロードしてインストールすればよいと思う。なお、今回はx86_64を使った。
こちらのサイトからダウンロードした。MSYS2に入っているOpenSSLとバージョンを合わせる必要がある。今回はWin64 OpenSSL v1.0.2pを利用した。v1.1系を入れると次のようなエラーが出てビルドできない。
$ OPENSSL_LIB_DIR=/c/OpenSSL-Win64 OPENSSL_INCLUDE_DIR=/c/OpenSSL-Win64/include /c/Users/Akimasa/.cargo/bin/cargo run Compiling openssl-sys v0.9.35 error: failed to run custom build command for `openssl-sys v0.9.35` process didn't exit successfully: `C:\Users\Akimasa\Documents\src\rust_openssl\target\debug\build\openssl-sys-8515c615cbb8f8fa\build-script-main` (exit code: 101) --- stdout cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_LIB_DIR cargo:rerun-if-env-changed=OPENSSL_LIB_DIR cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_INCLUDE_DIR cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR cargo:rustc-link-search=native=C:/OpenSSL-Win64 cargo:include=C:/OpenSSL-Win64/include OPT_LEVEL = Some("0") TARGET = Some("x86_64-pc-windows-gnu") HOST = Some("x86_64-pc-windows-gnu") TARGET = Some("x86_64-pc-windows-gnu") TARGET = Some("x86_64-pc-windows-gnu") HOST = Some("x86_64-pc-windows-gnu") CC_x86_64-pc-windows-gnu = None CC_x86_64_pc_windows_gnu = None HOST_CC = None CC = None TARGET = Some("x86_64-pc-windows-gnu") HOST = Some("x86_64-pc-windows-gnu") CFLAGS_x86_64-pc-windows-gnu = None CFLAGS_x86_64_pc_windows_gnu = None HOST_CFLAGS = None CFLAGS = None DEBUG = Some("true") TARGET = Some("x86_64-pc-windows-gnu") HOST = Some("x86_64-pc-windows-gnu") CFLAGS_x86_64-pc-windows-gnu = None CFLAGS_x86_64_pc_windows_gnu = None HOST_CFLAGS = None CFLAGS = None TARGET = Some("x86_64-pc-windows-gnu") HOST = Some("x86_64-pc-windows-gnu") CFLAGS_x86_64-pc-windows-gnu = None CFLAGS_x86_64_pc_windows_gnu = None HOST_CFLAGS = None CFLAGS = None running: "gcc.exe" "-O0" "-ffunction-sections" "-fdata-sections" "-g" "-fno-omit-frame-pointer" "-m64" "-I" "C:/OpenSSL-Win64/include" "-Wall" "-Wextra" "-E" "C:\\Users\\Akimasa\\Documents\\src\\rust_openssl\\target\\debug\\build\\openssl-sys-e711f0916b783511\\out\\expando.c" exit code: 0 cargo:rustc-cfg=osslconf="OPENSSL_NO_SSL3_METHOD" cargo:conf=OPENSSL_NO_SSL3_METHOD cargo:rustc-cfg=ossl101 cargo:rustc-cfg=ossl102 cargo:rustc-cfg=ossl102h cargo:rustc-cfg=ossl110 cargo:rustc-cfg=ossl110f cargo:rustc-cfg=ossl110g cargo:version_number=1010009f cargo:version=110 cargo:patch=f cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_LIBS cargo:rerun-if-env-changed=OPENSSL_LIBS cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_STATIC cargo:rerun-if-env-changed=OPENSSL_STATIC --- stderr thread 'main' panicked at 'OpenSSL libdir at `C:/OpenSSL-Win64` does not contain the required files to either statically or dynamically link OpenSSL', C:\Users\Akimasa\.cargo\registry\src\github.com-1ecc6299db9ec823\openssl-sys-0.9.35\build/main.rs:595:13 note: Run with `RUST_BACKTRACE=1` for a backtrace.
普通にVisual Studio CodeのPowerShellからcargo buildでビルドしたが…
Running `target\debug\rust_openssl.exe`error: process didn't exit successfully: `target\debug\rust_openssl.exe` (exit code: 3221225477)
こんなエラーが出て実行できないバイナリが出てくる。
$ OPENSSL_LIB_DIR=/c/OpenSSL-Win64 OPENSSL_INCLUDE_DIR=/c/OpenSSL-Win64/include /c/Users/Akimasa/.cargo/bin/cargo run
先ほどにも出てきたが、MINGW64を使って上記のコマンドを実行する必要がある。
こちらの投稿が参考になった
念のためもう一度試したら、PowerShellでもビルドが通って、実行もできたので頭を抱えている。
下記のようにOPENSSL_LIB_DIRとOPENSSL_INCLUDE_DIRを指定する必要がある。あと、MINGW64(自分の場合は”C:\tools\msys64\mingw64\bin”だった)へPATHを通す必要もある。
$env:OPENSSL_LIB_DIR="C:\OpenSSL-Win64\" $env:OPENSSL_INCLUDE_DIR="C:\OpenSSL-Win64\include" $env:PATH="$env:PATH;C:\tools\msys64\mingw64\bin
USB-Cポートが怪しげな感じで、サポートも改善するつもりが無いポリシーだという点以外、特に不満は無い。USB-Cが採用されて日が浅いので、仕方がない。(なお、この記事は必要に応じて加筆・修正されている。最終更新:8/22 部品販売について追記)
結構早い。開いたら瞬時にログインされる。
Retina Displayみたいな奴。フルHDの通常のモデルよりも発色が良いとレビューサイトに書いてあった。sRGBのほとんどをカバーしていたとか。
常に暗号化されている。パスワードをかけて安全に使うことができる。普段はパスワードをかけていなくても、常に暗号化されているので、暗号鍵を破棄することで瞬時に全体を消すことができる。これは便利。修理に出すときに全セクタ書き込みとかしなくても瞬時に消去できる。ただ普通のSSDでもSecure Eraseできれば、それで充分ではあるが…
到着まで時間がかかるからか、少し保証期間に余裕がある。1年2か月だった。
また、保証期間内なら後からアップグレードできる。1万円ちょい足せば1年保証を3年保証にできたりする。
PC Watchの記事によれば、NEC PC群馬事業所で修理されるとのことだ。到着して1時間半ほどで修理が終わった例もあるようだ。自分の場合は首都圏から出したが、引き取りの翌日の8/15に到着して、8/20に修理完了し発送、8/21には手元に戻ってきた。ちなみに、修理に出したが問題は解決していない。技術サポートではポリシーで周辺機器の相性は保証できないといわれたが、リペアセンターではiPhoneを使った動作確認を行ったようだ。この点は評価したい。非常に良いと思う。が、一貫しないポリシーだとも感じた。
キーボードなどはパーツを送ってきてもらって自分で修理できるというIBM時代からのCRUの制度が今も続いているはず。キーボードなどはパーツを送ってきてもらって自分で修理できる。参考までに2004年の記事を挙げておく
SSD、メモリを増設しても保証が切れない(はず)。裏蓋に封印シールなどは無く、特殊なねじでもなく、普通のドライバーで開けられる。ただ、修理に出すときは増設したパーツは元に戻した方が良さそうだ。それと、ナイロン被覆ねじが使われていて、緩みにくいようになっているらしいので、ねじの再利用は控えた方がよいのかもしれない。
パーツを買って自分で修理することもできる。保守マニュアルも公開されていて、簡単にパーツを交換できるようになっている。
2018年8月現在、発送手数料は1部品につき1500円(税抜)かかるようだ。スマートセンターの修理窓口から見積もりの請求をしてもらった。利用する人が多いからか、対応はスムーズだった。見積書は郵送、FAX、メールの3種類から選べる。メールで送ってもらった。家のT450sのキーボードが消耗しているので交換しようと思って見積もってもらったが、部品代が13000円弱(税抜)でこれに加えて発送手数料がかかる。AliExpressや米Amazonのマーケットプレイスみたいな怪しげな所だと30ドルくらいで手に入りそう。米国のIBM部品販売では価格が1500ドルと出ていた。誤植なのか、希少なので値上がりしているのか不明だ。代替品だと60ドル台だった。これに加えて発送手数料は15ドルかかるようだ。スマートセンターから購入すると少し高い印象だが、純正部品を国内から安全に購入できるのでありがたい。
ノートPCの新品のキーボードを使うのは久しぶりなので、打った感覚が少し新鮮だった。なんとなく、再生品で即日返品したSurface Bookに近い感じな気がする。非常にいい感じだ。
以前使っていた、T430と比較して、Bluetoothが安定している気がする。距離が離れてもBluetoothヘッドホンが音飛びしない。
MIL規格を通るといわれている頑丈さ。昔のモデルの方が頑丈だとか言う声も聞くが、昔(T430)も今(T480s)も剛性は充分に思える。指で押してみた限りでは、今の方がへこまない気がする。昔のは、表面がプラスチックで中にロールケージがある構造からか、押すと少しへこむ。
ただ、キーボードは排水構造が無くなっているので、もしかすると耐水性が落ちているのかもしれない。YouTubeに実際に水を掛けたら壊れた映像があった。
あまりサポートを受けたことがないので、よくあることなのかもしれない。サードパーティのデバイスとの相性については保証外というポリシーだった。以前にもNEC系列のサポートを受けた時に同じような対応だった。
以前、AtermでRaspberry Piとの相性問題が発生したことがあった。再現方法等詳細を送ったが、対応するつもりは無い様だった。
今回はThinkPadとNECのLAVIE Direct NEXT, LAVIE Direct NSでもiPhoneを認識しない問題を確認できた。しかし、NECレノボ以外の多数のメーカー(東芝、富士通、LG、VAIO、ASUS)では何も問題が起こらなかった。このことを伝えたが、他社の周辺機器については保証しないサポートポリシーなので、対応するつもりは無い様だ。
サードパーティの製品についてサポートを行わないのは、ある程度理解できる。中国の聞いたことも無いメーカーが出しているデバイスを認識しないとか言われても困る。しかし、iPhoneという日本では半数近くの人が使っているデバイスで起こる問題すら対応しないというのは、どうかと思う。しかも、NECレノボに限って問題が起こっていて、他社製品では起こらない問題だ。自分の製品がおかしいとは思わないのだろうか。そもそも、今時、相性問題なんて起こして恥ずかしくないんだろうか。もっとも、iPhoneがUSBデバイスとしておかしい可能性も考えられるが…
USB-Cケーブルで手元にあるEssential Phone PH-1とiPhone SEを接続したが、両方とも充電はされるが、デバイスとして認識されない結果となった。著名ライターがDPケーブルでトラブったという話を聞いたことがある。そのため、USBケーブルが怪しいのではないかと思い、買い足した。しかし、ケーブルを変えても依然、問題は解決せずに電話が認識されない。また、手元にある2台の電話を各種他社製のPCに接続したところ、正常に認識されて、写真のアクセスができる。ThinkPad T480sのUSB-Cポートは充電や純正ドックとの接続くらいしか期待できないものだと考えた方が良さそうだ。
USB-CにはAlternate Modeというのが存在するらしく、ThunderboltやDisplayPort、HDMIの信号も通すことが可能らしいが、これらについてはテストできていない。いずれ、試そうと思う。
自分の場合は届くまで2週間ちょいかかった。変動することはなかったが、1か月以上待つ人もいるとかいないとか。14日以上出荷されない場合はキャンセルが可能だったはずなので、必要に応じて利用するとよいかもしれない。