GPD microPCのヒンジがまた壊れたので直したりしていた

先日、ヒンジの修理をしたらファンが壊れてしまってどうこうって記事を書いていたGPD microPCだが、その後朝起きたらヒンジがバキバキに壊れくるという悲しい事態が発生した。

 

前回の壊れ方は、このリンク先の人と同じ壊れ方だった。なのでこのリンク先の人の修理方法で修理していた。

GPD MicroPC徹底レビュー特別編「GPD MicroPCのヒンジの修理」

 

しかし壊れたプラの固定が甘かったようで、また同じ壊れ方をしてしまった。なので再度同じ直し方で修理した。

もう一回microPCのようなPCをもう一度買うにしても、ヒンジが改善されたやつじゃないとイヤなので次モデル待ちなのである。

 

 

ところでJasper LakeになったCereron N5100の性能向上がすごいのでめちゃくちゃ期待している。なんせN4100比でCinebench R20のSingle Threadの性能が66%、Multi Threadでも50%も向上しているというのだ。このN5100はMacBook Air(2020 early)の安い方のモデルに搭載されたCore i3-1000NG4と比べても、Single Threadで80%の性能であり、Multi Threadでは1000NG4よりも随分速い。Geekbenchでも似たような傾向を示している。

 

今のmicroPCのヒンジが完全に復活できなくなる前にN5100搭載の次のモデルが出てほしい。

GPD microPCのファンが壊れてピンチ

GPD microPCのヒンジが壊れたので分解して修理しようとしていたらファンのマザーボード側のコネクタがもげてしまい、ランドもなくなってしまっているので半田付けで復活させることもできないという状況になった。ファンは回らなくなった。

 

 

microPCはファンが回らないとCPUの放熱が殆どなされない状況になるのですぐにCPU温度が100℃に到達してサーマルスロットリングが起きてめちゃくちゃ速度が遅くなってしまう。どれくらい遅くなるかというと体感でMMX Pentium 200MHzくらいの速度になったりする。YouTubeの動画を見ていると1秒再生されて10秒止まるというのが繰り返されるみたいな状況になる。これでは使えないので、マザーボードの別のところからファンに電力を供給する案とか、外部にUSBで回るファンをつけて回避する策とか、パッシブヒートシンクを拡充する案とかを検討する必要が出てきた。1番目の別のところから電力を供給する案は自分の技術力からすると難しそうな気がした。外部ファンは、スマホ用のファンに安いモノがないか物色していたのだが、安いものはでかいのしかなくて、上等そうなものはスマホのガチゲーマーが使うのでそれなりの値段がする上に、高いものを買ったとしてもやっぱり納得のいくサイズの小ささは望めなさそうだった。

 

 

とりあえずヒートシンクの上にサーマルパッド的なやつを張り付けて熱の拡散を狙うことにしたがmicroPCは樹脂筐体なので気休め程度にしかならないのだった。ThrottleStopというソフトでTurboBoostを無効にし、さらにPL1=5W/PL2=7Wみたいな超省電力設定にしてみたところ、なんとなくマシになったような気がする。これでしばらく使ってみる。

 

 

GPD microPCのヒンジは構造的に壊れやすい。https://pc.watch.impress.co.jp/docs/news/1311048.html で発表された新型は、初代からほとんどスペックが変わっていないので買い替えたいと思えるような内容ではない。Jasper Lakeのマシンが出てきたらまた考えることにしたい(でもこれ、Bay Trailのタブレットを買ったあと、次Cherry Trailのやつを買いたいなーと思って待ってたのになかなか出てこなくてそうこうする内に買い時を逃してしまった2015~2016年頃の雰囲気と似た感じがしてあまり良くない)。

本音を言えるようにしようとか心理的安全性とか

現在問題になっているのは、本音を言ってバカにされるとか貶されるとか罰せられるとかそういう心理的な話ではなく、下記のようなものなのではないか。

・本音を言うことにより今日残業しなくちゃいけなくなるとかクッソ面倒な作業が増えるとかそういうのがイヤだからしゃべらない

・本音を言ったところで何がが解決されることが望めず上司の心労を増やすだけだから言わない

 

 

たとえばさ、あなたが何かのリモートワーク監視ソリューションのベンダだったとして、いま会社の屋台骨を支えている製品の根本的な設計の部分にプライバシーや法的に致命的な問題がある可能性に気づいた場合、それを口に出すことで何かよいことがあるだろうか。それを言ってまず最初にやらないといけなくなることは「その可能性が本当に起こりえるのかを調査しろ」というやつであり、それを自分の部署でやるにしても他の部署でやるにしても金がかかってしまう。

「それを口に出して、真面目に検討したら、確実に金がかかってしまう」類の言葉を口に出せるのは「必要なら金を使っていい」とされている組織だけなのである。僕らが居るのは、たとえば前期はコロナの影響で赤字になっていて「今期の赤字は何があっても回避しろ」って言われてて、予算が削られてRAM8GBのPCを使わされているとか、資料を印刷するときにカラー印刷は高いからモノクロで印刷しろって言われて月に数枚印刷するだけで呼び出されて理由を聞かれるような職場だ。チーム内で心理的安全性ってやつが確保されていて、追加で金を使うような提案をして、それはたしかにそうだねってだけで、何かアクションが起こせる気がしない。だから言わないのだ。Googleみたいに会社として些細な金の心配をしなくていいような会社のベストプラクティスを持ってきたいなら、まず金を潤沢につかえるようにしてからにしてくれ。

 

 

大抵の場合、本音が言えないのは、それを言ったらバカにされるとかそういう理由ではなく、それを言ったら解決策を求められて、その解決には予算と時間が必要で、それを確保できないからなんだ。

A「明日のリリースにはこういうバグがあるかもしれません。不安です」

B「それはみんな知ってるけどこのままリリースするしかないじゃん」

C「いや、たぶんダメだと思うんだけど…」

D「相当ヤバいんだな。じゃあいまから深夜残業して点検しよう」

このチームでは心理的安全性は確保されているけど物理的な安全性が確保されていない。このとき、C/Dはこの発言をせずBが言った結論のまま進むことが望まれているかもしれない。リソースが足りてないことが根本的な原因になっている組織に心理的安全性などが流行ることは、これまで以上に精神論を振りかざされることにつながりそうな恐怖がある。

Pixel 4a

3月にPixel 4a を買って使っている。手持ちでそこそこのスペックのAndroid端末がない状態が続いていたので、買っていいかなと思った。正直、いまさらこれ買うのかみたいな気分になったりもしたが、iPhone 12 miniは指紋認証がなくて微妙だし、それ以外の端末はRakuten mini/handを除いてほぼすべてPixel 4aより大きいし、変なのを買ってしまうとAndroidのアップデートがされなくて詰んでしまうとかゲームがちゃんと動かなかったりする恐れがあって怖い。そしてPixel5aが、この4aよりもずいぶん大きく重くなってしまうという噂が決定打になって購入に踏み切った。

 

しかしPixel4aはWebの記事では人気だったと書かれているにもかかわらずケースの選択肢がとても少なく、特に軽くて薄いやつを探しても全然見つからないという絶望的な状況だった。でもiPhone6や初代SEの頃に存在していた厚さが0.4mmよりも薄いケースはiPhone 12 miniでももうないんで。

 

カメラは、昼間に街を撮影した感じだと、これまでメインに使ってた(そしてこれからも当分メインのままかもしれない)iPhone SE(2016)と比べて格段に良くなった気はしないし、空の色とかはiPhone SEのほうが個人的には好みだし、石畳のようなところを写すと撮像素子で発生したノイズを強引に除去したなってのが分かる部分が結構残っていたりする感じで、ちょっと期待外れ感があったが、まだ使い方を分かっていないだけのような気もする。たぶんこのカメラだけで(コンパクトカメラなんかと比べると)4万3千円の価値はある、という気もしないこともないが、本当にカメラだけの性能だったら最近出てきたRedmi note 10 proのほうが段残良さそうな気がする。

 

iPhone SE (2016)と比べたときのいいところ

- メモリが潤沢にあるのでタスクキルされにくい。シャニマスが快適に遊べる

- USB type-Cなので他のいろいろな機器と共通のケーブルを使える

- たぶん夜景がきれいに撮れるはず

いまいちなところ

- でかい

- イヤホン端子が上の方にあるのでストラップが下側につくケースを使ってしまうとイヤホンとストラップが反対側に飛び出して取り回しに苦労する

- シングルカメラのくせにカメラのでっぱりがでかくて下品な気がする

- ケースやディスプレイ保護フィルムの選択肢が少ない

 

iPhone SE (2020)と比べたときのいいところ

- こっちのほうが安いのにメモリ(RAMもNANDも)容量が倍

- 軽い

- イヤホン端子がある

悪いところ

- ケースやディスプレイ保護フィルムの選択肢が少ない

- CPUが遅い

Jelly Proが壊れました

3年半、サブスマホとして、メディアプレイヤーやテザリング、たまにFMラジオ用途に使っていたJelly Proのストラップ取付部が壊れてしまった。

 

もともとJerry Proはストラップの穴が小さく、普通のストラップ紐を通すのもキツキツだったんだけど、がんばって通していた。そのストラップを通す場所が壊れて、ストラップがつかなくなった。

 

それ以外は問題なくて、でもストラップがつけれないと不便なので内部のSIMトレイに糸を引っ掛けて強引にストラップをつけることにした。そろそろ後継機が欲しい。同じ重さで新機種が出てきたら多分買う。でもJelly2は重くなってしまって買えなかった。

組込みプログラムだから無限ループ、そんなわけないだろ

組込みプログラマがbusyループを書いて許されるのは20世紀までだよね… とずっと思ってた。だって電気勿体ないじゃん。

 

 

だから、たとえばArduinoのサンプルでよくこんなのがあって、それが組込みプログラムの代表例みたいに語られてると、なんかモヤモヤする。

int led = 9;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

 

 

delay()、なにやってるかわかる? 単にbusy-loopで指定時間分を待ってるだけだぞ。

「delay()中は他のことができないからmillis()を使いましょう」って言って、無限ループの中でmillis()を見張ってタイミングがきたら何か動作する、みたいな。

「ちゃんとスリープしてタイマ割り込みで復活するってのをちゃんと紹介してるヤツはいねーのかよ」って思って検索しても「delay()だといろんなことを並列にできないからタイマ割り込みでフラグを立てて、loop()の中では常に全力でそのフラグをチェックしてフラグが立ってたら処理を行うようにしました」みたいな、それだったらmillis()のほうがまだマシじゃねーかみたいな斜め上の解説が検索上位にヒットしてきたり。

 

 

違うだろ。そんなんじゃなくて、1クロックも無駄にするなとは言わないけど、できるだけCPUを動かさないようにちょっとくらいは考えるのが普通じゃないのか。「午後1時にxを、午後2時にyをやらないといけない」ってときに、午後1時になるまでずっと時計を見て1秒毎にいまは午後1時と午後2時になったかを確認しながら過ごすのは大人のやることじゃない。複数やらないといけないことがあったら、その将来のイベントを時系列順にリストのように並べておいていちばん直近のイベントまで寝る、というのが物心ついた人間の行動だろ。

 

 

って思うのだけど、上の例だったらもう2秒間のうち1秒間もの時間、LEDがついている時点でダメだからもうどうでもいいのかもしれない。組込みプログラムにもいろいろあるよね。時計とかウェアラブル機器のような小さい電池で動くプログラムの開発と、車載機器の開発では全然違って、前者では絶対にやってはいけないような電力の浪費が後者では許されている。自販機なんかだともっと豪勢だ。だからまあ一部だけを見て全部を語られるとモヤモヤするよね。そしてGoogleは最近検索にゴミが混じりすぎなのでもうちょっとちゃんとしてくれ。

MacBook Air early 2020がいろいろおかしい

MacBook Air early 2020はturbo boostの設定がおかしい。どう考えても正常な設定ではない。CPU温度がすぐ100℃に到達してしまい、定格以下の速度でしか動作できないタイミングが多発になってしまう。1.1GHzと謳っているのに0.7GHzから1.6GHzを行き来するような状態になる。これはほぼ詐欺のようなものだ。

 

どうにかもうちょっと安定して動作させることはできないかといろいろ調べていたがまず最初に出会ったのはTurbo Boost Switcherというもので、これを使うとTurbo Boostを無効化できずっと1.1GHz未満で動作するようになるというものだ。

Turbo Boost Switcher for Intel Mac

 

これを使うことによりデフォルトの状態よりも快適に長時間安定して使うことができるようになる。しかしもうちょっと丁寧に制御してくれてもいいんじゃないか。ファンをぶん回せば1.1GHzよりももうちょっと高いクロックを一瞬出す分には問題ないはずで、でもCPU温度が80℃を超えているのに電力を爆食いして100℃になってしまうような挙動を抑えてほしいだけなんだ。

 

 

そんなわけでTurbo Boost Switcherを使ってTurbo Boostをonにしたりoffにしたりする生活を1ヶ月くらい続けていたのだけど、昨晩VoltageShiftというMacBookのCPUの電圧を下げることができるソフトの存在を知り、調べたところ、CPUのPL1・PL2の設定*1 を変更することもできるようで、これこそ自分が望んでいたものではないかという気がした(しかもGPLソースコードが公開されており頑張れば自分で改造することもできそうだ)。

github.com

 

使えるようになるまでは少し難しいところもあって悩んだりしたが、無事動くようになり、まずはなにもしていない状態での現在設定を確認したところ、下記のような出力だった。

$ ./voltageshift info
------------------------------------------------------
VoltageShift Info Tool
------------------------------------------------------
CPU voltage offset: 0mv
GPU voltage offset: 0mv
CPU Cache voltage offset: 0mv
OC mailbox cmd failed
System Agency offset: 0mv
Analogy I/O: 0mv
OC mailbox cmd failed
Digital I/O: 0mv
CPU BaseFreq: 1100, CPU MaxFreq(1/2/4/6/8): 3500/3300/3200/3200/3200 (mhz)
OC_Locked PL1: 100W PL2: 125W
CPU Freq: 2.3ghz, Voltage: 0.8224v, Power:pkg 11.65w /core 7.32w,Temp: 100 c

1分間ほど目を疑ってしまったがPL1=100W, PL2=125Wという、これが設定されているのか、それともこれはCPUのMAX値なのかどちらかよくわからない値が表示された。変更してみると、下記のような表示が出たので、このPL1=100W はやはりそういう設定で動作していたということのようだった。どこのデスクトップPCだよ。

$ ./voltageshift power 7 10
Password:
Current Setting: PL1(Long term): 100W, PL2(Short term) 125W
Modified Setting: PL1(Long term): 7W, PL2(Short term) 10W 

 

そんなわけでこのいい意味でも悪い意味でも頭がおかしいデフォルト設定を脱出し、上記のようにPL1=7W, PL2=10Wのように設定してやることで80℃くらいで安定して動作させることができるようになった気がした。

 

 

いや、でも、このearly 2020に載っているCPU(i5-1030NG7)のTDPは10Wだったはず*2。いくらなんでも定格以下のTDPでの動作を強いられるのは納得行かないので、PL1=PL2=10Wに設定してやると90℃で安定して10W動作できるようだった。ファンがうるさすぎるので納得は行かないが、完全に不良品だろとは言えないくらいには排熱できていた(でもPL1=10W, PL2=15Wに設定したところ高負荷が継続したときに発熱が処理できずにクロックがしばらくの間低下してしまうようだった)。