8月 282025
 

ちょっと前のエントリで「予想より速く壊れた Libero Flip orz。」と、いうのを書きました。Y!mobile (Softbank) ショップに修理依頼を出したのですよ。

で、約 8 日程で修理が完了し、Softbank ショップから電話があり、久しぶりに我が手に戻ってきました。
電話を受けたときに無償修理であることを聞きました。『おぉっ!!無償修理だったのかっ!!』と半分驚きつつ小躍りしたのは言うまでもありません;-)。

ネット上では『有償修理で 34,000yen かかると言われた。』とか『壊れ方によっては保証期間内であっても有償修理。』などと、いうのがありましたが、僕のは無償修理だったのであります。大体 10 ヶ月くらいで壊れたので、まぁ、保証期間内だったのでしょうね。

 
まず、修理に出すために Softbank ショップに行ったのですが、事前予約していったためスルっと、ことが進みました。事前予約制というのはなかなか良いですね。

で、担当の方と色々話をし、

「有償修理となった場合はいくらくらいまで出せますか?」

と、聞かれました。まぁ、もとが 9,800yen だったので、僕の回答としては

「お金がかかるようでしたら、とりあえず修理無しで結構です。」

と、伝えました。それで、引き渡し。つまりは修理依頼しました。

 
引き渡し時にはその場で初期化することになります。あと、Android 機はおサイフケータイの情報などは本体や SIM ではなく NFC チップに記載するので NFC チップの初期化も必要になるそうです。

iPhone と、いうか Apple 製品と、いうか iOS の場合は OS 上でおサイフケータイやウォレットの情報を持っていて、OS 初期化すると全て消えるのですが、Android OS の場合のほとんどの機種は NFC チップ上にウォレットの情報を持っているので、初期化する必要があるそうです。

中古で売りに出すときも Android 機は OS の初期化だけでなく NFC チップの情報も初期化しないとダメだそうです。

 
eSIM は事前に別機種に移しておきました。 僕は povo2.0 の eSIM を利用しているのですが、機種変更時、免許証の写真撮ったり本人確認が必要になるのですが、無料な点が良いですね。
一旦、修理前に別のスマートフォンに eSIM を移して、今回修理から戻ってきたら再度 Libero Flip に eSIM を入れました。

あ。話はうんと飛ぶのですが、 Libero Flip で povo2.0 それは俗に言うと au 回線になるのですが、都内ではほぼほぼ Band 1 を利用するので、比較的電波を拾ってくれます。ところが、郊外だとか海沿いに行くと au のプラチナバンドである Band 18 が使えない Libero Flip では au SIM を入れていると圏外になるケースが多かったですね。やはり Libero Flip は Softbank のスマートフォンなのだ。と、実感します。

 
と、いうことで話を戻しますが、本体空っぽにして預けて、修理が完了して戻って来ました。

戻ってきた Libelo Frip は本当に修理だったそうで IMEI の変更はありませんでした。
どのあたりを修理したのかというと、ヒンジの部分と、ディスプレーの部分を交換したそうです。

スッキリな状態。復活し default 状態なスマートフォン。

家に帰って色々セットアップしたのですが、 Android のバージョンも 14 のままだし、動かないサブディスプレーの機能も動かないままだし、相変わらず 47゜C を突破すると、ネットワーク系・ GPS 系が停止するのも修理前と一緒でした・・。なんか、嬉しいような悲しいような・・。

では、データ転送しましょう。

僕は google にバックアップ取ってないので、手持ちの他の Android 機から同期します。

そんなこんなで、再度利用することになった Libero Flip ですが、今度は親指で開けるような、片側のヒンジの部分のみに負荷をかけるようなことはせず、テクマクマヤコン的に両手であけるようにしたいと思います。また、充電時など、持ち歩かない場合には、不必要に閉じないでおこうと思っている次第です。

今度は二年持ちますように・・。

8月 162025
 

mac 上で音楽を聞くときは「ミュージックアプリ」というのを利用します。以前は iTunes と呼ばれていたヤツですね。で、ミュージックアプリに CD からリッピングした楽曲をたくさんホーりこんで、プレイリストなどを作成して iPhone と同期すると、指定したプレイリストとそこに含まれている楽曲も転送してくれます。

mac に Android を接続しても転送してくれないので、車の中で Android の中の音楽を聴きたい場合に非常に悲しいのでありました。

 
今回は macOS のミュージックアプリで作成したプレイリストと、楽曲の転送方法について検討してみたいとあります。

世の中、似たような記事が結構あるかと思いますが、今回僕が試した方法は比較的容易にプレイリストと楽曲転送ができました。

 
準備するもの

  • macOS とミュージックアプリ
  • Android 機 (今回は AQUOS sense9 SH-M29A を利用)
  • Android 上のミュージックアプリ (今回は Musicolet を利用)
  • mac と Android のデータ転送用アプリ (macOS 側にインストールしますが、今回は openMTP を利用)

 
楽曲データの転送
まずはじめにですが、 mac と Android 間でデータ転送 (楽曲などを転送) する手段は色々あるかと思います。 AQUOS sense9 は MicroSD を入れられるので、本体から MicroSD を抜いて mac に接続してデータ転送することも可能です。

Libero Flip の場合は SD カードが入らないので、Android 本体を直接 mac に接続させる必用があります。
しかし、 Android を mac に USB で接続しても簡単に認識してくれません。 MTP (メディア転送プロトコル) に対応したソフトウェア経由でないとデータ転送が行えません。なので、mac 側に openMTP というアプリをインストールして、Finder みたいな UI でデータを転送することになります。

 
まず、ミュージックアプリで作成したプレイリストに含まれていると思われる楽曲をひとまず Android なり MicroSD に転送してください。そのとき、ディレクトリ構造については非常に気をつけてください。

・mac 側のディレクトリ構造

/Volumes/USB-DISK/Music Library/iTunes Music/Music/Compilations/とある科学の超楽曲集/01 only my railgun.m4a

 

・Android 側のディレクトリ構造

[SDカード]/Music/Compilations/とある科学の超楽曲集/01 only my railgun.m4a

 
mac 側は、僕の場合、楽曲は外付け HDD に持っていて、それをミュージックアプリで参照していますが、重要なのは “Music” ディレクトリ配下のディレクトリ構造を mac と Android で同じにする必用があります。ここ重要ですからね。
Android 側は SD カードに入れても本体に入れてもかまいません。 “Music” ディレクトリ配下が mac と一緒になって入れば問題ありません。

ひとまず、楽曲データの転送は完了したでしょうか?

 
プレイリストの抽出と転送
mac ミュージックアプリでプレイリストを抽出します。

ミュージックアプリの抽出したいプレイリストを選択し、上のメニューから[ファイル]->[ライブラリ]->[プレイリストを書き出し…]で、書き出すことができます。「アニソン.m3u」みたいな感じのファイル名になるかと思われます。

書き出したプレイリストは Android の参照可能な MicroSD カードや本体のディレクトリに保存します。

以上です。簡単ですね;-)。

プレイリストをエディタで開いてみると、以下のような形式になっているでしょうかね。

#EXTINF:254,only my railgun - fripSide
/Volumes/USB-DISK/Music Library/iTunes Music/Music/Compilations/とある科学の超楽曲集/01 only my railgun.m4a
#EXTINF:248,Dear My Friend -まだ見ぬ未来へ- - ELISA
/Volumes/USB-DISK/Music Library/iTunes Music/Music/Compilations/とある科学の超楽曲集/02 Dear My Friend -まだ見ぬ未来へ-.m4a
EXTINF:214,SMILE -You & Me- - ELISA
/Volumes/USB-DISK/Music Library/iTunes Music/Music/Compilations/とある科学の超楽曲集/03 SMILE -You & Me-.m4a

 
絶対パスで記載されているのがミソです。

 
Android で Musicolet を起動
Musicolet というアプリは音楽を聞くためのアプリですが、ハイレゾ対応・広告なし、また自分で再生エンジンを持っていたりするので、 Xperia 以外の Android では重宝するのではないかと思われます。僕の場合はこれ一択です。
そんなこんなで今回は Musicolet を利用します。

まず、「スキャンするフォルダー」で、SD カードなどを選択し、データ転送した Music のディレクトリを指定してスキャンを実行します。
右下の「三点」->[設定]->[楽曲ライブラリとタグ]->[スキャンするフォルダー]で選択できます。

選択できたら一個戻って[スキャン]を実行します。バックグラウンドでスキャンしてドドドと再生できるようになります。

 
この状態でもフツーに音楽聴けます。全曲シャッフル再生とかでも問題ないのであれば、全然 OK です。

ただ、「ミュージックアプリや iPhone と同じプレイリストを持ち歩きたいっ!!」となった場合、次に進みましょう。

 
いよいよプレイリストを読み込むよっ!!
先ほど、プレイリストに含まれているであろうと思われる楽曲と「アニソン.m3u」と、いうプレイリストを Android 側に転送しました。
これを Musicolet に読み込ませてあげます。
下のメニュー右から三番目にプレイリストの項目があります。その一番下に[外部プレイリスト]というのがあるのでそれをタップし「アニソン.m3u」を読み込ませてあげます。



 
選択します。


 
追加します。

すると、プレイリストの一覧にミュージックアプリで作成したプレイリストがそのまま登録されます。

以上です。

あとは再生すると、ミュージックアプリのプレイリストそのままで再生が開始されます。凄いなぁ。

 
考察
Musicolet が非常に頑張ってくれているであろうこうは想像に難しくありません。 macOS と Android とか Windows などでは「゜」とか「゛」がぶっ壊れるなど文字コードに互換がないので、変換したりし、Android に転送するプレイリストを作成・編集するときは一苦労だったのですが、そういうのもありません。と、いうか気になりません。

楽曲が持っているメタタグ情報とかアートワークなどもそのまま表示してくれます。

Musicolet はすごいアプリです。感動しました。

 
ちなみにですが Musicolet はプレイリストを書き出すこともできます。今回試しに「アニソン.m3u」と、いうプレイリストを書き出してみて、mac のミュージックアプリが書き出したものと比較してみました。

ミュージックアプリが書き出したものは上にありますね。Musicolet が書き出したプレイリストの形式は以下になります。

#EXTINF:254,only my railgun - fripSide
Music/Compilations/とある科学の超楽曲集/01 only my railgun.m4a
#EXTINF:248,Dear My Friend -まだ見ぬ未来へ- - ELISA
Music/Compilations/とある科学の超楽曲集/02 Dear My Friend -まだ見ぬ未来へ-.m4a
EXTINF:214,SMILE -You & Me- - ELISA
Music/Compilations/とある科学の超楽曲集/03 SMILE -You & Me-.m4a

 
なんとっ!!相対パスに書き換わっていましたっ!!
「スキャンするフォルダー」からの相対パスとしてプレイリストが書き換わっています。と、いうことは、上でも書いた通り、macOS 上のディレクトリ構造と、Android に持って行ったときのディレクトリ構造が一緒であれば、プレイリストが効果的に機能する。と、いうことですね。

凄いぞっ!!

 
と、いうことで、今回は mac のミュージックアプリのプレイリストを Android 上でも利用できるようにしてみました。と、言っても、僕はただファイルの転送しただけですけどf(^^;;。
Musicolet は凄いっ!! の一言で終わってしまいますね。

しかし、これで、ミュージックアプリ・iPhone・Android で同じプレイリストを共有できるようになりました。
ただ、楽曲の転送については手動部分が残りそうですね。 mac 側のプレイリストを利用して楽曲を MicroSD に cp するスクリプトとか書けそうですけどね。

そうすると楽曲自体も同期取れそうですね。

 
実はここまで来るのに雨の三連休で色々調べて、試して、それなりに工数かかりました。が、やりたいことがほぼ出来たので、それはそれでヨシとしておきましょう;-)。

8月 032025
 

去年の 11 月でしたかね「Libero Flip 購入しました。」というエントリ書いたのは。

その後由緒正しく折りたたんで利用していたのですが、夏になりまず悲鳴を上げたのが CPU 周辺の温度。
この機種は大体温度が 47゜C になるとネットワーク系をオフにします。

最初、何が起きたのかわからなかったのですが、車の中でヤフーカーナビアプリを利用していていきなり通信断。そして GPS も停止しました。道案内を任せていたのですが、突然のこと、かつ、初めてのことなので半分パニック。車を脇に停車して原因を確認したところ、温度上昇による通信系強制オフな機能が無条件で働いた。と、いうことがわかりました。

車の中はエアコンが効いている。とはいえ、ダッシュボード付近は直射日光を受けてスマートフォンの温度が上昇したのでしょうなぁ・・。

 
その後、気温が高い夏場は色々やっていてもすぐに通信・GPS 断な状態が頻発します。
炎天下の中、テクテク歩きつつポケモン GO とかすると大体 15 分程度でシューリョー。orz

ダメ。全く使えない。さすがは ZTE だなぁと・・。 このメーカのスマートフォンは良く『熱くなって使えない。』と、その昔聞いていたのですが、まさか自分の身に降り注ぐとは・・。

と、いうことで自作で、余っていた PC のパーツで、空冷ファンを自作しました。USB ケーブル接続で、外に出るときにはバッテリーを持ち歩き、家の中・車内ではそのまま USB 接続で利用。てな感じです。

自作したファンと一緒に。熱はサブ画面のある側、上のほうがべらぼうに熱くなります。ここにファンを装着して冷やす。と、いうことになります。

結構通信断が頻発して、実際に使えない状態が多いので今まで入れていた Y!mobule の SIM カードはこないだ購入した AQUOS sense9 に入れて利用することにしました。

と、こちらが熱暴走によるネットワーク系ダウン障害の事象です。

 
本題に行く前に、ダメな点をもう一個書いておきましょう。

この機種は Android14 が振ってきました。さすがはキャリアで売っている端末ですね。一応バージョンアップ保証対応という感じでしょうか。

ただ、Android13 -> Android14 へのバージョンアップは作りがいい加減でそれなりに悲しい。
まぁ、メーカとしては Libero Flip の後継が出たのでそっちに注力したい。と、いうことなのでしょなぁ。

 
ダメな点そのいち
バージョンアップしたらログイン時の数値叩く画面が下半分にしか表示されなくなって、文字(フォントサイズ)が小さくなった。全画面に表示してくれよー。とは思っても設定小項目なし。
まぁ、この程度だとかわいいモンかな? 僕的は辛いんだけど・・。

 
ダメな点そのに
サブディスプレイ(正確には「外部ディスプレイ」というのかな?)に何個か本体の状態を表示できるんだけど、「音楽」のメニューを選択しても何も表示しなくなった。
SMART USEN と U-NEXT アプリ、 Musicolet 根こそぎ表示されなくなった。見事にデグレードです・・。orz

 
まぁ、熱暴走が発生した時点でちょっと調査したところ『Android14 にバージョンアップしたら熱暴走が頻発するようになった。』と、いう意見があったので、なるほど。 Android14 へのバージョンアップは失敗だったのね。と、いうことでしょうか・・。詳細はわかりませんが。

僕的は色々悲しい Libero Flip の Android14 です・・。orz。

 
で、ここからがようやっと本題。
Libero Flip 購入前に『Libero Flip はヒンジの部分で液晶割れるよー。』と、いうのはちらほら聞いて(見て)いました。

『まぁ、折りたたみだし、二年持てば御の字かねぇ。』的発想で 9,800yen で購入しました。前回のエントリにも書いてますが Paypay ポイントで 500 ポイントくらい、「Libero Flip ガチャキャンペーン」で 1,000 ポイントくらい戻ってきて、かつ、 2,000yen 相当のケースまで付いたので、実質的には 6,000yen 前後で購入できたので、それはそれでラッキーでした。

 
で、ヒンジの部分から液漏れ発生です・・。 orz
左側の真ん中辺りがポツーンと黒くなっていて、上に向かって緑の線が走るようになりました。もぉ、ダメだ・・。orz

まだ、一年使ってないです。補償対象かな? 来週ソフトバンクショップに行って来て確認してみます。

 
どうしてこのようになったのか、ちょっと状況説明しておきます。

最近、 Libero Flip は閉じて利用しています。スーパーでお買い物して、Paypay で支払う時、その昔のガラケーのときにのように親指で上の部分を開く感じで開けていました。雰囲気的には本当にガラケー開ける感じ。
フリップ型のスマートフォンの正しい使い方ですね。で、これが優越感に浸れる瞬間;-)。

で、スーパーで開けようとした瞬間、メリっと、音がして、ヒンジの部分がなんか、ズレたような雰囲気です。

最初は、上の写真で確認すると、ヒンジの黒くなっている部分は点が三つくらいでしたが、そのうち黒いエリアになって、かつ、上の方に緑の線が伸びていきました。で、上の写真のような状態。

とりあえず、PASMO を移動して Google PAY のカード情報削除しました。 NFC の中に書き込まれていると消すの大変だし。あとは、おサイフケータイ系、アカウントでログインするアプリは根こそぎ移動。

あ、今回の移動のために、現役引退させた Aquos Sence6 を復活させました。話が横にそれますが、「Aquos Sence6 は遅くて重くてイヤになる。もうダメ・・。」とか言っていたのに一旦初期化してまっさらな状態にして再度環境構築進めたら『なんか速くね?』みたいな雰囲気です。が、まぁ、一時的な緊急利用です。

 
とまぁ、 Libero Flip はバックアップというか、不要となりそうなアプリを削除したりして、とりあえず、週末にショップに行くのであります。

修理なら個体は戻ってきそうだし、機種変更なら別の機種が来るだろうし、有償修理となれば、持って帰るけど、液晶見えなくなったら何もできなくなるし・・。

 
と、いうことで Libero Flip はやはり、開いたまま利用するのが良いかと思われます。

あと、ガラケーのように親指で開けるのではなく、ちゃんと両手で開けるのが良いかもです。
親指で開けると左側のヒンジのみに圧力がかかるかな?両手でちゃんと、なんだろ、僕はやったことないけど、ファンデーションのカラを開けるような雰囲気?テクマクマヤコン的な開け方をしたほうが良いのではないかと思われます。

 
他にも壊れた方いましたら、コメントなど頂ければ嬉しいです;-)。

7月 042025
 

去年の 11 月に Y!mobile で Libero Flip を 9,800yen で購入しました。
折りたたみ機種が破格の値段で購入できるので、現在も利用中なのですが、なんとっ!! さすがは ZTE の機種ですね。夏は熱くて使えない。
本体の熱が 47゜C を突破すると無線系が強制停止します。「モバイルネットワーク」の「モバイルデータ」や GPS などがいきなりオフになってしまいます。

一番最初に強制停止したのは車中でヤフーカーナビを利用していたときでした。突然道案内が停止し、結構慌てました・・。orz。
その後、ポケモン GO をやっていても一時間程度で熱くてやはり「モバイルデータ」が止まったりしてしまいます。

熱くなるのはサブディスプレーがある側。どちらかというと上のほうですね。こちらのほうに CPU などがあるのでしょう。ここを猛烈に冷やす必要があります。

と、いうことで Libero Flip を夏場に常用するとちょっと無理があるので、しょーがない。新しいのを買ってみるか。と、なったのであります。

 
以前から利用していた AQUOS sense6 は買ったときから遅くて、最近はアプリがクラッシュするようになって、もう耐えられない状態。

今度買うのは小さめなスマートフォンが良い。と、決めていたので、そうなると国産のスマートフォンしか現状ありえない。本当は Nothing Phone (3a) が欲しいと思ったのだけど、でかすぎる・・。

Xperia 10 VI は高いのと OS の更新頻度が低いので長く使えなさそう。もう一回 AQUOS に行くか? とか思ったけど、AQUOS sence6 がひどすぎたし・・。などと悩んでいてズルズルと延びていたのですが、遅ればせながら、結局 AQUOS sense9 の SIM フリー版 SH-M29A を購入しました。発売からだいぶ時期が経過しているので、ポイントなど諸々換算すると 45,000yen くらいで購入できました。

 
もうすでに世の中には AQUOS sense9 のレビュー記事は溢れているので、僕が気がついた点だけをちょっとまとめてみたいと思います。

箇条書きにしてみました。

  • むちゃくちゃ速いよっ!! (AQUOS sense6 と比べて)
  • iPhone15 とサイズがまるで一緒
  • 写真は悪くないし、シャッター音も消せる
  • USB-C で接続すると画面出力 OK
  • 5G SA (Standalone) 対応

 
まぁ、一応、これだけあると「充実の一台っ!!」って、感じでしょうか;-)。

1.むちゃくちゃ速いよっ!! (AQUOS sense6 と比べて)

いや。解ってます。 AQUOS sense6 がひどすぎた。買って使い始めた瞬間愕然としました。約半年後に AQUOS sense6s が出ましたな。
それに引き換え AQUOS sense9 の速さには驚きました。 SoC に Qualcomm Snapdragon 7s Gen 2 が搭載されていますが、これが非常に速く感じる体感を得られます。
シャープの OS 開発の技術力もあるのかな?
Libero Flip は Snapdragon 7 Gen 1 なので、SoC を考察すると一世代進歩した。と、いう感じでしょうか。 AQUOS sense6 と比べると劇的な速度体感が得られ Libero Flip と比べるとほんのちょっと速いかな?的体感速度でした。

AQUOS sense9 は sense8 と、比較すると 1.1 倍だっけか? sense6 と比較すると 4 割増くらいかな?
いやぁ。速度の違いが体感できました。幸せです;-)。

 

2.iPhone15 とサイズがまるで一緒

AQUOS sense9 は sense6 と比較すると、随分と横幅があります。AQUOS sense6 は どちらかというと SONY Xperia 10 II など Xperia 系とサイズが似ていましたが AQUOS sense9 はもう iPhone15 とサイズがほぼ一緒です。

写真こんな感じ。裏側から見た大きさ。

写真二枚目。厚さ。

AQUOS sense9 は iPhone15 に比べて 1mm くらい長くて、厚さは 0.3mm くらい厚いと、いう、もうほぼほぼサイズ一緒です。
なるほど、持ちやすい。と、感じるわけだ。カメラ部分の出っ張りが違うだけであとは一緒。まぁ、AQUOS sense9 のカメラの出っ張り部分のデザインは大人気ですしね。それはそれでぐー。

あと、ゼベルの写真も掲載しておきます。

iPhone15 は上下左右全部同じ幅ですが、AQUOS sense9 は上下一緒、左右一緒で、上下に均等に多少太くなってます。平たく言うと Xperia みたいで極薄。って、感じでしょうか。下たげゼベルが太い安めのスマートフォンよりはまだまし。見たいな感じでしょうか。

 

3. 写真は悪くないし、シャッター音も消せる

AQUOS sense6 も Xperia 10 II もカメラ機能で撮る写真はそれはそれは酷かったた。まぁ、写真は iPhone15 もしくはデジカメで撮れば良いやー。とか思っていたのですが、 AQUOS sence9 で撮る写真は比較的ぶマシになったほうかな。
ここでは、深く掘り下げることはしませんが;-P。

ところでカメラアプリの設定を確認していたら驚いたっ!! (@_o)

「シャッター音」というメニューがあって、それがオフにできる。ありがたい機能ですなぁ。今のスマートフォンはこういうのアリになったのかな? ちなみに Android のバージョンは 15 になっています。

料理の写真とか撮る機会多いので、シャッター音がしない。と、いうのは他の人に迷惑をかけることもない。と、いうことで、それは幸せになれますね。

 

4. USB-C で接続すると画面出力 OK

まさかっ!! ミドルレンジのスマートフォンで USB-C 経由の画面外部出力に対応しているとは思わなかった。

僕が過去に購入したスマートフォンの中で 画面出力に対応していたのは iPhone15 のみで AQUOS sense9 が二台目になります。
まぁ、 USB-C で接続して利用する携帯型サブディスプレーを一個持っているので、それに簡単に出力することができます。それはそれで幸せです。
ただ、そんなに利用する機会があるのかは未定ですが。

 
ちなみに iPhone15 は USB-C な HUB に HDMI ポートがついていると HDMI 経由でも画面出力が可能でしたが、 AQUOS sense9 でも試してみたところ、 HDMI 経由でも無事に画面出力できました。

旅行などに行ったときに撮った写真をホテルのテレビに出力したりとかできそうですね。

 

5. 5G SA (Standalone) 対応

この機能が使える日が来るのか、はたまた実際に利用されているのか?と、いうのはわかりませんが、これまたミドルレンジ機なのに 5G SA に対応しているそうです。
iPhone15 が 5G SA に対応しているそうなので、この機種がやはり二台目の対応機になります。

今 AQUOS sense9 には Y!mobile の SIM カードを入れています。 Softbank の純粋な 5G の電波が届くところでは利用が可能になるのかな?とは思っているので、まぁ、そういうところに行ったときには十分に活躍してくれることでしょう;-)。

 
ちなみに Android には「NewRadioSupporter – 5G回線チェッカー」と、いうのがあるので、自分のスマートフォンが今どの電波を掴んでいるのか、確認することができます。

ワクワクが広がります;-)。

 
とまぁ、今回 AQUOS sense9 を購入してみて、気がついた点をダラダラと書いてみました。他にも隠れた機能があるのかもしれませんが、今後の発見が楽しみです。

それにしても色々なところで iPhone15 とサイズ的にも機能的にも重複している点が多いのは驚きました。 iPhone15 と比べると、今回価格は半額以下で購入ました。『コストパフォーマンスが優れた製品』と、いうことになるでしょうか。
動作も比較的俊敏で、まぁ、なんとか納得行く速さに仕上がっています。 「目の付けどころがシャープでしょ。 」ですな;-)。

OS アップデートは 3 回 (Android17 まで対応?)セキュリティアップデートが 5 年かな? 比較的長期間使えそうです。

今後のセカンド機として活躍してくれることでしょう;-)。

2月 162025
 

今まで購入した「NiPoGi GK3Pro ミニ PC」や「Beelink MINI S」は Intel の Atom 系の CPU だったのだけど、今度は AMD Ryzen7 の CPU 搭載ミニ PC を購入しました。

まぁ、AMD Ryzen7 搭載ミニ PC が欲しかった。と、いうのもあるのですが、一番は USB Type-C がついているモノが欲しくなった。と、いうのが大前提としてありました。モバイルサブディスプレーなどは HDMI ではなく USB Type-C のものがそれなりに存在しているし、そーいうのに接続できるミニ PC が欲しくなった。と、いうことですね。

 
amazon で購入しましたが、注文したのは 2024/12/29 で、正月休みにこれで遊べたら嬉しいなぁ。なんて思っていましたが、配達されたのが、明けた 2025/01/18 でした。あらま・・。
まぁ、このミニ PC は 2022 年に発売されたようで、今はもう売ってないみたいです。僕が買ったタイミングで、多分、既に在庫一斉セール状態だったのかもしれません。だって、以下のスペックなのに 40,154yen で、そこにポイント還元で 400 ポイントくらいもらったので、実質 30,000yen 台で購入することができました。

  • CPU: Ryzen 7 5800H (3 コア/16 スレッド)
  • Memory: 16GB (DDR4 SO-DIMM 8GBx2)
  • SSD: PCIe M.2 2280 SSD 512GB

 
多少古い製品で、既にディスコンとはいえ、新品でこのスペックであればサブ機として十分です。
届いた箱を早速開けました。中に入っていたのはこんな感じ。

写真中央のちょっと上の黒い個体が本体で、右の説明書の下にあるのが、100W の USB Type-C のアダプターです。 USB Type-C のポートが二つあり、一個はミニ PC 本体への電源供給。もう一個は他の機器の充電用。なのだと思い、試しましたが PC に電源供給して起動している最中にもう一個の USB-C ポートに接続したら、PC 本体の電源が落ちてしまいました(g_g)。ダメじゃん・・orz。

本体の下の袋にはいっているのが S-ATA コネクタです。マザーボードに接続してミニ PC 本体に S-ATA の 2.5 インチ SSD などを追加可能です。早速、余っていた SSD を中に入れました。

全体のスペック、筐体の雰囲気などはこんな感じです。

 
このミニ PC 使い方ですが、どうしよう・・。

以前購入した NiPoGi GK3Pro ミニ PC は Windows11 Pro がインストールされていて、かつ FreeBSD でデスクトップ環境もフルで KDE6+Plasma6 が入っているマルチブートな環境で利用していますが、メインでの利用は FreeBSDで、それを bhyve サーバとして、利用していて仮想マシンが 3 台動作しています。

今回購入したのは Windows11 Pro の専用機に使用かなぁ。と、なったのであります。

 
まぁ、中国産のミニ PC は基本 OS 再インストール必須なので、今回も全て削除してから Windows11 Pro を再インストール。アクティベーションキーは BIOS(UEFI) 中で持っているので、サクっと再インストールできました。また、 Atom 機とは違い使っているデバイスも AMD 系 PC の一般的なものなので、あちこちから拾ってくる手間いらずで嬉しいです。

探し回ったのは WiFi と Bluetooth のドライバくらいでしょうか。最近は AMD の CPU 搭載 PC は MediaTek のものを利用しているケースが多いので、それだけ拾ってきました。

普段は FreeBSD の pciconf -lv を貼り付けるのですが、今回は FreeBSD はインストールしないので「デバイスマネージャー」のキャプチャを貼り付けておきます;-)。

さてと。 Windows 専用マシンとして利用するのにどうしよう。などと思ったのですが Oracle VirtualBox をインストールして、そこに FreeBSD/amd64 14.2-RELEASE をインストールしてみたいと思います。

と、いうのも Oracle VirtualBox はバージョンが 7.1.6 になって、MS ゴシックのギザギザしたフォントが変更になり、ちゃんとアンチエイリアスが効いたフォントで表示されるようになりました。また、Qt5 から Qt6 にフレームワークが変更になり、ロゴのアイコンまで変更になり「お。なんか良い感じじゃーん。」となっているのであります。

 
では、ここから FreeBSD/amd64 14.2-RELEASE をインストールして、X まで動作させていきます。

1. VirtualBox 7.1.6 を拾ってきてインストール
2. VirtualBox 7.1.6 Extension Pack を拾ってきてインストール
3. FreeBSD の iso ファイルを拾ってくる
4. FreeBSD をインストール

 
端折りましたが、ここまで大丈夫でしょうかね。

で、今回は X まで動作させるので、当然 KDE6 をインストールします。
他のマシンで既に KDE6+Plasma6 が動作しているので、そのマシン上で以下のコマンドを実行すれば、pkg を生成してくれます。

# pkg create -n -g -o /usr/ports/packages/All -a

 
あとは今回 Virtialbox にインストールした FreeBSD 側で /usr/ports/packages/All を NFS マウントするなり /usr/ports/packages/All/* を scp で取ってくるなりして pkg add kde-6.2.5.24.12.2.pkg などすれば 一気にインストールされます。また、 xorg-7 や emacs-29.4 などを pkg add するのも良いでしょう。

と、いうか、僕の場合、メインの ports コンパイルマシンがあって、そこでコンパイルして pkg create して NFS サーバ上に置いて、他の FreeBSD は NFS マウントして pkg add しています。 FreeBSD サイトを利用した pkg install はほぼ利用していないです。 pkg install すると、僕の make config とは合わないので、あまり利用していません。

 
と、いうこどて、 Xorg をインストールして KDE6+Plasma6 までインストールが完了しました。と、いうことで Xorg を起動させましょう。

今回 VirtualBox で FreeBSD を動作させるには以下のサイトが参考になるかと思います。

https://docs.freebsd.org/en/books/handbook/virtualization/#virtualization-guest-virtualbox

 
virtualbox-ose-additions を emulators/virtualbox-ose-additions からインストールします。 Xorg 使う版をインストールします。その後、 /etc/rc.conf に以下の行を追加。

vboxguest_enable="YES"
vboxservice_enable="YES"

 
続いて /usr/local/etc/X11/xorg.conf.d/ 配下の xorg.conf の設定です。 今の Xorg は結構自動で設定認識して動作するので設定は不要かもしれないです。僕の場合の設定を記載します。

o. 00-module.conf

Section "Module"
    Load  "GLcore"
    Load  "drm"
    Load  "fb"
    Load  "vgahw"
    Load  "shadow"

    SubSection "extmod"
        Option      "omit xfree86-dga"
    EndSubSection
EndSection

Section "DRI"
    Group "video"
    Mode 0666
EndSection

Section "ServerFlags"
    Option      "StandbyTime" "3"
    Option      "SuspendTime" "5"
    Option      "OffTime"     "10"
    Option      "AIGLX"       "True"

#   Option      "AllowEmptyInput" "off"
#   Option      "AutoAddDevices"  "off"
EndSection

 

o. 10-monitor-screen.conf

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Monitor Vendor"
    ModelName      "Monitor Model"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "NvAGP"

    SubSection "Display"
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection

 

o. 20-video.conf

Section "Device"
    Identifier "Card0"
    Driver "vboxvideo"
    VendorName "InnoTek Systemberatung GmbH"
    BoardName "VirtualBox Graphics Adapter"
EndSection

 

o. 50-keyboard.conf

Section "InputClass"
    Identifier      "AT Keyboard"
    MatchIsKeyboard "on"
#   Driver      "kbd"
    Driver      "evdev"
#   Option      "XkbRules"   "xorg"
    Option      "XkbRules"   "base"
    Option      "XkbModel"   "jp106"
    Option      "XkbLayout"  "jp"
#   Option      "XkbOptions" "ctrl:swapcaps"
EndSection

 

o. 60-mouse.conf

Section "InputDevice"
        Identifier      "Mouse0"
        Driver          "vboxmouse"
        Option          "Protocol"      "auto"
#       Option          "Device"        "/dev/sysmouse"
        Option          "Buttons"       "5"
        Option          "ZAxisMapping"  "5 4 6 7 8 9"
EndSection

 
Xorg でディスプレーを表示させたり、キーボードやマウスを認識させたり、マウスホイールを動作させたりするには VirtualBox 側の「設定」が重要になってきます。

必要な設定内容を抜き出しました。

  • 「システム」の「ポインティングデバイス」は[PS2 マウス]を選択
  • 「システム」の「EFIを有効化」にチェック
  • 「システム」の他の「拡張機能」も必要に応じてチェック
  • 「ディスプレイ」の「グラフィックコントラー」は[VBosSVGA]を選択
  • 上記の設定を有効にすることにより一番下に「無効な設定が見つかりました」となるがとりあえず無視して[OK]を押す
  • CPU やメモリ容量については自分の好みでチョイス

 
こんな感じで設定して、 FreeBSD を起動して Xorg を起動すると動作してくれると思います。

ただ、一点。マウスのホイール機能がいまいち怪しい動作です。どうやら VirtualBox の他の機能に食われているようです。

FreeBSD の画面のメニューから「入力」をクリックして「マウス統合」を無効にしてみてください。

「マウス統合」を無効にすると、FreeBSD のウィンドから他のウィンドに移動する際、左 Ctrl ボダンを押す必要があります。シームレスにマウスが動作しません。しかし、VirtualBox の FreeBSD ではホイール機能はちゃんと動作するようになりました。ただ、ダブルクリックしてコピーしようとしたとき、下にちょっとズレたり、あまり使い勝手が良くないような・・。

このあたり、趣味の世界で利用方法を選択してください。

 
今回、初めてコッテリと Windows 側で FreeBSD を設定してみました。普段は PC 買ったら即『マルチブート』が鉄則になっていたので、まぁ、ある意味良い体験でした。これで、Windows 上の VirtualBox で FreeBSD が動作することも確認できたし、まぁ良しとするですかねぇ。

ちなみに、今回購入したミニ PC で World of Warships なるゲームを試してみましたが 3 分に一回落ちるとか、結構悲惨。ファイナル・ファンタジーのベンチマークとか走らせたら 1920×1080 のフル HD で 2700 とか。ゲームにはちとつらいか・・。

2月 062025
 

kde.org から KDE6 がリリースされて、FreeBSD では長らくベータ版だったのですが、いよいよ 2025/2/3 に、ports-current に降ってきました。以前「FreeBSD に KDE5 が降ってきた。」と書いたのは 2018 年 5 月で、その間ずっと KDE5 と Plasma5 を使っていたのですが、今回、めでたくバージョンアップです。

今回は KDE5+Plasma5 から KDE6+Plasma6 へのバージョンアップ編として書いてみたいと思います。

KDE5 から KDE6 へのバージョンアップについては、以下の項目に付いて重点的に考慮しつつインストールしてみたいと思います。

  • QT5 との決別
  • fcitx は 4 系から fcitx5 へ移行
  • fcitx5 への移行に伴う mozc のバージョンアップ

内容が似ているようないないような雰囲気ですが、簡単に説明すると、そもそも KDE6+Plasma6 になると QT5 が不要になり、 KDE6+Plasma6 は QT6 へ移行していきます。また、QT5 と QT6 では qt アプリケーションの中でも同居できないモノがあり conflift が発生するので QT6 への移行は必須となります。

QT5 を使っているアプリケーションが色々あるよなぁ。と、思うのですが、上記でいうと mozc-tools が QT5 を利用しているので、これを QT6 を利用しているバージョンに移行する必要があります。するっていと、 fcitx は 4 系から fcitx5 へ移行。と、なります。

では実際にインストールしてみます。環境としましては、 FreeBSD/amd64 14.2-RELEASE において、現在、 KDE5+Plasma5 がインストールされている状態のところに ports から x11/kde をインストールするところから始めます。

次に fcitx5 をインストールして、最後に mozc をインストールして、環境を整えます。

 

1. kde6 のインストール
まず、その前に不要なものを削除しましょうか。

# pkg delete kde5-5.27.11.23.08.5_2
# pkg delete ja-fcitx-mozc-2.23.2815.102.01_25 ja-mozc-el-2.23.2815.102.01_25 ja-mozc-server-2.23.2815.102.01_25 ja-mozc-tool-2.23.2815.102.01_25
# pkg delete fcitx-qt5-1.2.7 zh-fcitx-4.2.9.9 zh-fcitx-configtool-0.4.9_2
# pkg delete sddm
# pkg autoremove
#
# pkg info | grep qt5- | awk '{print "pkg delete -fy " $1}' | sh -x
# pkg info | grep kf5- | awk '{print "pkg delete -fy " $1}' | sh -x
# pkg info | grep plasma5- | awk '{print "pkg delete -fy " $1}' | sh -x
#
# portmaster -a
#
# cd /usr/ports/x11/kde
# make install
# cd /usr/ports/x11/sddm
# make install
#

 
大体こんな感じでしょうか。そして、そのあと x11/kde をインストールします。
一点気をつけるのが x11/plasma6-plasma の make config のオプションです。

下の「Install Plasma 6 integration plugins for Qt5 applications」にチェックを付けてコンパイルすると、ドドドと QT5 関係のソフトウェアが入ってしまいます。なので、チェックは外したほうが良いです。
それにしても、ここからインストールされる qt アプリはどうして QT5 と QT6 で conflict を起こさないのだろう・・。不思議だ。

まぁ、速いマシンで約半日。と、いう感じでしょうか。

まっさらな状態から KDE6+Plasma6 をインストールするときは素直に下の二つの make install を叩けば良いでしょう。あ。その前に 既存のインストールされているものを portmaster -a で最新の状態にしておきましょう。

 
インストールが完了した KDE6 と、以前利用していた KDE5 との違いはあまり感じられません。まぁ、themes で色々カスタマイズしているしているので、それはそれで今まで利用していた自分の環境が引き継がれるかと思います。
ただ、QT5 から QT6 になった関係で themes やアイコンが引き継がれない場合があるので、その場合は「ソフトウェアセンター」から再インストールしましょう。

KDE6+Plasma6 になって一番変わったのは「設定」アプリでしょうか。左側の並び順がごそっと変わりました。一番上に[入力/出力デバイス]が来て、[接続されたデバイス]とか、[外観とスタイル]は結構下に移動しました。

あとは、現在動作確認中です。特に問題なく動作しています。

 

2. fcitx5 のインストール
次に日本語入力である fcitx5 をインストールします。 fcitx の 4 系は今までは ports では chinese/fcitx にありましたが fcitx5 では textproc/fcitx5 になります。 textproc/ の下に fcitx5 関連のものが色々入っているのでこちらをインストールします。

# cd /usr/ports/textproc/fcitx5
# make install
# cd ../fcitx5-qt
# make FLAVOR=qt6 install 
# cd ../fcitx5-gtk
# make install
# cd ../fcitx5-m17n
# make install

 
こんな感じで OK です。 fcitx5-qt は FLAVOR=qt6 を指定して QT6 対応のものを作成します。
fcitx5-gtk は Firefox や Thunderbird など GTK アプリで日本語入力をする場合に必須ですので、インストールします。 falkon などは QT6 アプリなので fcitx5-gtk は不要で日本語入力ができます。
GTK アプリで日本語入力する場合は環境変数が多少変わりました。以下のように指定すると良いでしょう。

export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

 
GTK_IM_MODULE は、多分今まで xim と指定していたかと思いますが、 fcitx5 からは fcitx と指定してください。これで Firefox でも日本語が打てるようになります。

 
fcitx5 を利用していて、もうひとつ困るのが設定についてです。KDE6 のパネルにウィジェットとして「入力メソッドパネル」を追加すると、日本語キーボードと mozc の切り替え、または動作モードが表示されますが、「インプットメソッドを設定」で fcitx5 のオン/オフやキーバインドの設定をするのですが、これには textproc/fcitx5-configtool が必要になります。がっ!! しかし、 textproc/fcitx5-configtool をコンパイルすると QT5 のファイルがドドドとインストールされてしまいます。で、QT6 のファイルと conflict が発生します。結構痛い・・。

一時的に textproc/fcitx5-configtool をインストールして、fcitx5 の設定が完了したらサクっと、 textproc/fcitx5-configtool を pkg delete して、かつ、 pkg autoremove して conflict した QT6 のアプリを再インストールするのが良いかと思われます。

 
fcitx5-configtool で設定した情報は ~/.config/fcitx5/config の設定ファイルとして保存されます。と、いうことは、このファイルを使い回せば大丈夫なわけですね。

せっかくなので、ここに僕の ~/.config/fcitx5/config を貼り付けておきましょう。
これをそのまま自分の環境に置くと textproc/fcitx5-configtool のインストールが不要になります。

[Hotkey]
# トリガーキーを押すたびに切り替える
EnumerateWithTriggerKeys=True
# 次の入力メソッドに切り替える
EnumerateForwardKeys=
# 前の入力メソッドに切り替える
EnumerateBackwardKeys=
# 切り替え時は第1入力メソッドをスキップする
EnumerateSkipFirst=False

[Hotkey/TriggerKeys]
0=Shift+space
1=Henkan
2=Muhenkan

[Hotkey/AltTriggerKeys]
0=Shift_L

[Hotkey/EnumerateGroupForwardKeys]
0=Super+space

[Hotkey/EnumerateGroupBackwardKeys]
0=Shift+Super+space

[Hotkey/ActivateKeys]
0=Hangul_Hanja

[Hotkey/DeactivateKeys]
0=Hangul_Romaja

[Hotkey/PrevPage]
0=Up

[Hotkey/NextPage]
0=Down

[Hotkey/PrevCandidate]
0=Shift+Tab

[Hotkey/NextCandidate]
0=Tab

[Hotkey/TogglePreedit]
0=Control+Alt+P

[Behavior]
# デフォルトで有効にする
ActiveByDefault=False
# フォーカス時に状態をリセット
resetStateWhenFocusIn=No
# 入力状態を共有する
ShareInputState=No
# アプリケーションにプリエディットを表示する
PreeditEnabledByDefault=True
# 入力メソッドを切り替える際に入力メソッドの情報を表示する
ShowInputMethodInformation=True
# フォーカスを変更する際に入力メソッドの情報を表示する
showInputMethodInformationWhenFocusIn=False
# 入力メソッドの情報をコンパクトに表示する
CompactInputMethodInformation=True
# 第1入力メソッドの情報を表示する
ShowFirstInputMethodInformation=True
# デフォルトのページサイズ
DefaultPageSize=5
# XKB オプションより優先する
OverrideXkbOption=False
# カスタム XKB オプション
CustomXkbOption=
# Force Enabled Addons
EnabledAddons=
# Force Disabled Addons
DisabledAddons=
# Preload input method to be used by default
PreloadInputMethod=True
# パスワード欄に入力メソッドを許可する
AllowInputMethodForPassword=False
# パスワード入力時にプリエディットテキストを表示する
ShowPreeditForPassword=False
# ユーザーデータを保存する間隔(分)
AutoSavePeriod=30

 

以上で fcitx5 のインストールは終わりです。

ただ、fcitx5 を利用するようになると、今度は japanese/fcitx-mozc が利用できなくなります。 japanese/fcitx-mozc を利用しなくなるので合わせて japanese/mozc-server も利用しなくなります。と、いうことで fcitx5 に対応した fcitx5-mozc を利用することになるのであります。

と、いうことで次へ。

 

3. fcitx5-mozc のインストール
FreeBSD-users-jp な ML でも何回か投稿がありました。ports-current の fcitx-mozc の mozc のバージョンは ja-fcitx-mozc-2.23.2815.102.01_25 ですが、 fcitx5 に対応した mozc は ja-fcitx5-mozc-2.31.5712.102_6 という、先進的なバージョンになります。

まずは、情報収集として以下の URL を確認します。

https://lists.freebsd.org/archives/freebsd-users-jp/2024-July/000379.html
https://github.com/kdeguchi/mozc-ports

 
では、インストール手順ですが、まず上の URL の github.com から mozc-ports-main.zip をダウンロードして展開し /usr/ports/ 配下に設置します。

# wget https://github.com/kdeguchi/mozc-ports/archive/refs/heads/main.zip -O mozc-ports-main.zip
# unzip mozc-ports-main.zip
# cp -pr mozc-ports-main /usr/ports/mozc-ports
# cd /usr/ports/mozc-ports/japanese/
# ls 
fcitx-mozc/   fcitx5-mozc/  ibus-mozc/    Makefile.inc  mozc-el/      mozc-server/  mozc-tool/    uim-mozc/

 
こんな感じです。で、/etc/make.conf に一行追加します。

# fcix5-mozc compile
OVERLAYS+=/usr/ports/mozc-ports

 

これで準備が整いました。コンパイルしていきます。
ちなみに mozc は最新版です。 mozc-ports/devel/bazel8 も合わせてインストールされて openjdk18 など java 関係のごついのが色々インストールされます。コンパイルにそれなりの時間がかかります。

# cd /usr/ports/mozc-ports/japanese/fcitx5-mozc/
# make install
# cd ../mozc-server
# make install
# cd ../mozc-tool
# make install
# cd ../mozc-el
# make install
# 

 
コンパイルは時間はかかりますが、順調に進むと思います。 python3 が BUILD_DEPENDS と RUN_DEPENDS で必要になります。既存でインストールされている python3.11 などを /usr/local/bin/python3 へと symlink する lang/python3 がインストールされます。

無事にコンパイルできて、インストールして、使えるようになったでしょうか?

僕の場合は特に問題なく動作しましたが、ただ、一点。 mozc-el がダメで emacs 中で日本語が利用できなくなりました。どうも /usr/local/libexec/mozc_emacs_helper が起動されない雰囲気です。色々試したけどやっぱりダメで emacs-lisp 部分の /usr/local/share/emacs/29.4/site-lisp/mozc/* のファイルを ja-mozc-el-2.23.2815.102.01_25 の、つまりは japanese/mozc-el がインストールしたものと入れ替えたら無事に動作しました。入れ替えるファイルは emacs-lisp の部分のみなので、mozc のバージョンに引きずられることもなく、無事に動作して一安心。

 
とまぁ、これで KDE6+Plasma6 と QT6 がインストールされ、日本語入力もできるようになり KDE5+Plasma5 から KDE6+Plasma6 と QT6 への移行が完了しました。

ただ、残りほんの少し QT5 を利用しているアプリが存在します。その一つが sddm になります。おかげで deskutils/plasma6-sddm-kcm をインストールして themes を別のに選択しても反映されない。とかが起きています。
あと、 KDE 系とは直接関係ないですが、 vlc も QT5 のライブラリを利用しています。今のところ最後の QT5 利用アプリはこの二つ。 pkg info | grep qt5- | wc -l すると 16 となっています。

 
あ。KDE6+Plasma6 の Wayland についてちょっと触れておきます。 sddm から Plasma (Wayland) を指定してログインしてもすぐに sddm の画面に戻ってしまい、 Wayland では利用できません。
sddm でのログイン時のログは ~/.local/share/sddm/wayland-session.log に保存されているので確認することができます。僕の環境では以下のログが出力されていました。

kwin_core: Could not determine the active graphical session
kwin_wayland_drm: failed to open drm device at "/dev/dri/card0"
kwin_wayland_drm: No suitable DRM devices have been found

 
なんか、AMD CPU と、そこに搭載されているグラフィックチップでは Wayland が動作しないようです。 nVidia とか Intel なGPU なら動作するかもしれんです・・(g_g)。

 
と、いうことで、ほぼ完全に移行が完了しました。これからドンドン使い込んでいきたいと思います。
KDE については KDE5 のときもそうでしたが、時々パラパラっとエントリ書いていますので、もしかしたらまた書くかもです。

 
あ。 japanese/mozc-server あたりは最新の 2.31.5712.102 にならないのかな? (独り言)

1月 112025
 

Linux 方面では pacemaker と corosync 、そして drbd で MySQL サーバの冗長構成を構築する。なんてのは日常茶飯事のようですが、同様な構成を FreeBSD で組んでみたい。
と、いうのも Linux 方面では pacemaker の管理用コマンドがややこしい。以前の CentOS7 辺りでは crm_mon を利用しているかと思っていたが、 AlmaLinux8 では どうやら crm_mon が利用できない。あと、 pacemaker のバージョンが 1 系から 2 系になり、設定ファイルに互換性がなくなり、もう一度、設定方法について勉強し直し。みたいな雰囲気で、そろそろ FreeBSD で MySQL サーバの冗長を組みたくなってきた。と、いう雰囲気です。

 
と、いうことで、今回は FreeBSD で carp と hast を利用して、二台のマシンで冗長構成な MySQL サーバを構築してみましょう。

そもそも、二台の FreeBSD を利用した冗長構成な MySQL サーバを構築するには何を利用したら良いの? Linux で言うところの pacemaker と drbd みたいなものって、何かあるの?などと、調査からはじめました。
carp が pacemaker 部分。 hast のほうが drbd を受け持っている。と、いう認識で良いかと思われます。

まずは順番に見ていきます。

 

1. 今回の構成

二台の FreeBSD を用意するわけですが、今回は VMware ESXi 上で動作する FreeBSD/amd64 14.2-RELEASE と bhyve 上で動作する FreeBSD/amd64 14.2-RELEASE を用意しました。二台のサーバ共、同一の ESXi 上に載せていても冗長構成になりませんからねf(^^;;。

ESXi 側の FreeBSD のホスト名は freebsd-esxi (192.168.202.53) 、bhyve上で動作している FreeBSD のホスト名は freebsd-bhyve (192.168.202.202) として運用します。あと、 VIP が必要ですが、これは 192.168.202.251 とします。

図に書くとこんな感じになります。

それぞれの仮想環境上に冗長構成として利用する 2 台のサーバを設置。各サーバは OS をインストールしたディスク (da0) と、hast 用 (Linux で言うところの drbd) にもう一個 da1 を用意します。それが、各ホストの下の「hast disk」です。

プライマリ側で hast で利用しているディスクに更新があると、チョロチョロチョロっと、対向のセカンダリ側の hast のディスクに書き込まれて同期が保たれます。で、セカンダリ側がマスタになると、そのまま hast disk をマウントしてサービスを開始します。

carp はプライマリとセカンダリを切り替える機能、 Linux で言うところの pacemaker と corosync に相当します。

それでは実際に hast と carp の設定について見ていくことにしましょう。

 

2. carp の設定

まずはネットワーク系に相当する carp の設定から見ていきます。
とは言いつつ、簡単です。

まずはカーネルモジュールのロード設定ですね。

o. /boot/loader.conf

carp_load="YES"

 
続いて VIP の IP アドレスの設定を /etc/rc.conf に記載します。
プライマリ側とセカンダリ側では多少設定が違います。

o. プライマリ側 /etc/rc.conf

ifconfig_em0_alias0="inet vhid 1 pass mysql00 alias 192.168.202.251/32"

 

o. セカンダリ側 /etc/rc.conf

ifconfig_em0_alias0="inet vhid 1 pass mysql00 advskew 50 alias 192.168.202.251/32"

 
まぁ、実際に、セカンダリの設定が入っているサーバがプライマリで動作しているときにプライマリの設定が入っているサーバが再起動すると、セカンダリとして動作するので、設定自体にあまり意味はないかもですね。

 
この設定を入れると em0 には VIPが付加されるのと、マルチキャストアドレスが付加されます。まずは上記設定を入れて再起動してみましょう。

$ ifconfig em0
em0: flags=1008943 metric 0 mtu 1500
        options=4e524bb
        ether 00:0c:29:75:28:84
        inet 192.168.202.211 netmask 0xffffff00 broadcast 192.168.202.255
        inet 192.168.202.251 netmask 0xffffffff broadcast 192.168.202.252 vhid 1
        inet6 fe80::20c:29ff:fe75:2884%em0 prefixlen 64 scopeid 0x1
        inet6 2001:470:fe36:feed:0:202:211:1 prefixlen 64
        carp: MASTER vhid 1 advbase 1 advskew 50
              peer 224.0.0.18 peer6 ff02::12
        media: Ethernet autoselect (1000baseT )
        status: active
        nd6 options=21

 
192.168.202.251 が alias で付加され、あと、carp: MASTER vhid 1 advbase 1 advskew 50 というのが付加されます。マルチキャストアドレスで、同期判断をしています。多分、Linux でいうところの drbd に相当する差分データも流れていると思います。

そして、一点注意点があります。VMwareESXi 上で動作している仮想マシンの em0 が接続する vSwitch はプロミスキャス・モードを有効にしてあげる必要があります。 ESXi 的に言うと『無差別モード』と、いうヤツですね。これを許可していないと二台サーバの同期ができません。
bhyve 側にはこの設定がありません。まぁ、bhyve の vSwitch に相当する部分はそもそも bridge インターフェイスなので、プロミスキャス・モードは既にオンになっていますね。

と、いうことでネットワークの設定は終了。
続いて hast 側、HDD の作成や、設定について見ていきましょう。

 

3. hast 用ディスクイメージの用意

上にも書いたとおり、ディスクイメージは二つ必要で、da0 側に OS イメージをインストールし、da1 側はフツーに ufs でフォーマットします。あ。多分 zfs でも行けると思いますが、僕は ufs でフォーマットしました。

両方のサーバで実施してください。

# newfs -U /dev/da1
# mount /dev/da1 /mnt/
/dev/da1  20308252      8   18683584     0%    /mnt
# umount /mnt

 
gpart で、パーティションを分けるようなことはせず、ダイレクトに /dev/da0 に対して newfs を実施します。その後、マウントして、サイズを確認します。2 台のサーバで同一容量になっている必要があります。

 

4. hast 用環境設定

続いて各種設定を見ていきます。

o. /etc/rc.conf

hastd_enable="YES"

 

o. /etc/hast.conf (新規に作成)

replication memsync
resource disk0 {
    on freebsd-esxi {
        local /dev/ada0
        remote 192.168.202.202
    }
    on freebsd-bhyve {
        local /dev/da1
        remote 192.168.202.53
    }
}

 
/etc/hast.conf ファイルは一個のディクスを用意する場合は上記の設定で、二個目の場合は resource disk1 { } みたいになります。
両方のサーバで同一の内容を記載します。
on freebsd-esxi { } の設定のところで remote の IP アドレスを記載します。対向のサーバの IP アドレスになります。
また、ホスト名は名前解決ができている必要があります。 DNS 登録がない場合は /etc/hosts に記載しましょう。

o. /etc/fstab

/dev/hast/disk0 /var/db/mysql   ufs     noauto,rw,noatime       0       0

 
とりあえず /var/db/mysql にマウントする設定内容で記載します。

設定内容はこんな感じですかね。 Linux 方面 の pacemaker と corosync、そして drbd の設定よりは格段に楽ちんです。

 

5. /dev/hast/disk0 の準備

まずは hastd を起動します。

# service hastd start
# ps -ax | grep hast
1053  -  Ss    0:00.01 /sbin/hastd

 
続いてディスクの初期化を実施します。

まずは、プライマリサーバ側から。今回は、プライマリ側サーバは IP アドレスの若版である、freebsd-esxi にします。

# hastctl create disk0
# hastctl role primary disk0

 

続いてセカンダリ側を。こちらは freebsd-bhyve になります。

# hastctl create disk0
# hastctl role secondary disk0

 

そしたら次に HDD 初期化とマウントを実施します。これは両方のサーバで実施してください。

# newfs -U /dev/hast/disk0
# fsck -fy -t ufs /dev/hast/disk0
# mount -o noatime -o rw /dev/hast/disk0 /var/db/mysql

 

ここまで来たら作業は完了。 hastctl でステータスを確認します。

# hastctl status disk0
Name    Status   Role           Components
disk0   degraded primary        /dev/ada0       192.168.202.51
# hastctl list
disk0:
  role: primary
  provname: disk0
  localpath: /dev/ada0
  extentsize: 2097152 (2.0MB)
  keepdirty: 64
  remoteaddr: 192.168.202.51
  replication: memsync
  status: degraded
  workerpid: 1747
  dirty: 75497472 (72MB)
  statistics:
    reads: 211
    writes: 150
    deletes: 0
    flushes: 0
    activemap updates: 36
    local errors: read: 0, write: 0, delete: 0, flush: 0
    queues: local: 0, send: 0, recv: 0, done: 0, idle: 255

 
こちらはプライマリ側の状態です。hastctl status disk0 で確認すると、primary と表示され、IP アドレスも合わせて表示されます。
セカンダリ側でも同様のコマンドで確認することができます。今回は割愛します。
hastctl list はディスク同期の詳細が表示されます。まぁ、簡単に言うと、この二つのコマンドは Linux でいうところの cat /proc/drbd みたいな感じでしょうか。

 

6. hast の状態の遷移

HDD イメージを二台のサーバ間で操るのですが、hastctl コマンドで制御します。

  • プライマリとして利用: hastctl role primary disk0
  • セカンダリとして利用: hastctl role secondary disk0
  • どちらでもない状態:   hastctl role init disk0

実際に運用し始めるとある程度解ってくると思います。

 
とまぁ、ここまでで carp と hast の設定が全て完了しました。これで、さぁてっ!! 冗長構成にするぜいっ!! と、は、実はまだなりません。

carp はサーバ障害発生時に IP アドレスを付け替えてくれます。hast は HDD 周りの同期を取ってくれます。がっ!! では、誰が /dev/hast/disk0 を /var/db/mysql にマウントしてくれるの?誰が切り替わった後に mysqld を起動してくれるの?

そーなのです。 carp+hast はこの部分に未対応です。なので、スクリプトを書く必要があるのであります。ありゃまっ!! orz

ここからはスクリプトについて見ていきましょう。

 

7. ホストダウンの検知

対向のホストがダウンした場合、検知は carp がしてくれます。カーネルモジュールを kldload しているので、実質的にはカーネルでの検知と、いうことになりますね。
ですので、イベントは devd で拾うことができます。まずは devd の carp.conf を作成します。設置場所はお好きなところに。僕は /usr/local/etc/devd/carp.conf を設置しました。

中身はこんな感じです。が、今回は以下のサイトを参考にさせて頂きました。ありがとうございました。

https://qiita.com/asakura_titems/7c117f2d7870afa76994

 
o. carp.conf

notify 0 {
    match "system"          "CARP";
    match "subsystem"       "[0-9]+@[0-9a-z]+";
    match "type"            "(INIT|MASTER|BACKUP)";
    action "/usr/local/bin/carphast.sh $type $subsystem";
};

 
system が CARP で、subsystem が ifconfig em0 したときの MASTER vhid で、type が ステータスですね。このイベントを拾ってから action で記載されたスクリプトが動作します。

スクリプトは以下になります。

o. carphast.sh

#!/bin/sh

services="mysql-server"
resources="all"

action=$1
vhid=${2%@*}
ifname=${2#*@}

syslog_facility="user.notice"
syslog_tag="carp-hast"
maxwait=60
delay=3

logger="/usr/bin/logger -p $syslog_facility -t $syslog_tag"


if [ "$resources" = "all" ]; then
    hastdevs=$(/sbin/hastctl dump | /usr/bin/awk '/^[[:space:]]*resource:[[:space:]]/ {print $2}')
else
    hastdevs="$resources"
fi


# 
case "$action" in
    MASTER|BACKUP|INIT)
        $logger "State Changed. I/F: $ifname VHID: $vhid state: $action"
        ;;

    AUTO)
        action=$(/sbin/ifconfig $ifname | /usr/bin/awk '/[[:space:]]*carp:[[:space:]]+([A-Z]+)[[:space:]]vhid[[:space:]]'"$vhid"'[[:space:]]?/ {print $2; exit}' )
        if [ "$action" ]; then
            $logger "State Changed. I/F: $ifname VHID: $vhid state: $action"
        else
            die "carp state not found"
        fi
        ;;
    
    *)
        die "$action is not yet implemented"
        ;;
esac


reverse_list()
{
    _revlist=
    for _revfile in $*; do
        _revlist="$_revfile $_revlist"
    done
    echo $_revlist
}

die()
{
    $logger "FATAL: "$*
    exit 1
}

# check hastd enabled
if ! /bin/pgrep -q hastd; then
    $logger "hastd not running"
    exit
fi


stop_services()
{
    for service in $( reverse_list $* ); do
        if /usr/sbin/service ${service} onestatus | /usr/bin/grep -q "running as" ; then
            /usr/sbin/service ${service} onestop \
                || $logger "Unable to stop service: ${service}."
        fi
    done
}

change_role()
{
    roletype=$1
    shift 1
    
    for hdev in $*; do
        /sbin/hastctl role $roletype $hdev \
            || $logger "Unable to change role to $roletype for resource: $hdev"
    done
}

# main
case "$action" in
    BACKUP|INIT)
        # stop services
        stop_services $services

        # unmount ufs
        for mdev in $(/sbin/mount -p | /usr/bin/awk '/^\/dev\/hast\// {print $1}'); do
            for hdev in $hastdevs; do
                if [ "$mdev" = "/dev/hast/$hdev" ]; then
                    /sbin/umount -f $mdev \
                        || $logger "Unable to unmount: ${mdev}."
                fi
            done
        done

        # change role
        if [ "$action" = "BACKUP" ]; then
            roletype="secondary"
        else
            roletype="init"
        fi
        change_role $roletype $resources

        $logger "Change role $roletype completed."
        ;;

    MASTER)
        # stop services
        stop_services $services

        # wait for not running secondary
        for hdev in $hastdevs; do
            for i in $(/usr/bin/jot $maxwait); do
                /bin/pgrep -fq "hastd: ${hdev} \(secondary\)" || break
                sleep 1
            done

            if /bin/pgrep -fq "hastd: ${hdev} \(secondary\)" ; then
                die "Secondary process for resource ${hdev} is still running after $maxwait seconds."
            fi
        done

        # change role primary
        change_role primary $resources
        sleep $delay

        # wait for the /dev/hast/* devices to appear
        for hdev in $hastdevs; do
            for i in $(/usr/bin/jot $maxwait); do
                [ -c /dev/hast/$hdev ] && break
                sleep 1
            done

            if [ ! -c /dev/hast/$hdev ]; then
                die "GEOM provider /dev/hast/$hdev did not appear."
            fi
        done

        # mount ufs
        for mdev in $(/usr/bin/awk '/^\/dev\/hast\// {print $1}' /etc/fstab); do
            for hdev in $hastdevs; do
                if [ "$mdev" = "/dev/hast/$hdev" ]; then
                    $logger "mount $mdev"
                    /sbin/mount -p | /usr/bin/grep -q -e "^${mdev}[[:space:]]" && break;
                    
                    /sbin/fsck -y -t ufs ${mdev} \
                        || die "Failed to fsck: ${mdev}."
                    
                    /sbin/mount ${mdev} \
                        || die "Unable to mount: ${mdev}."
                fi
            done
        done

        # start services
        for service in ${services}; do
            /usr/sbin/service ${service} onestart \
                || $logger "Failed to start service: ${service}."
        done

        $logger "Change role primary completed."
        ;;

esac

 
基本的に、MASTER の場合は hastctl role primary disk0 して /var/db/mysql をマウントして mysqld をスタートする感じ。
それ以外は hastctl role secondary disk0 する。それをもう少し複雑に色々している雰囲気でしょうか。
まぁ、切り替わったときにやる一連の作業を devd 経由で検知して、スクリプトを実行するようにした。と、いう感じです。

この辺り、の管理用スクリプトとか、ports になってないのかな?

 
僕の場合、もう一個、 /etc/rc.local から呼び出して実行するスクリプトを用意しています。サーバが再起動したとき hastctl status disk0 すると init になっているので、対向のホストに ssh してステータスを確認して hastctl role secondary disk0 を打つようにしました。

o. /usr/local/bin/hast_primary_check.sh

#!/bin/sh

REMOTE=`/usr/local/bin/sudo hastctl list | grep remoteaddr |awk '{print $2}'`
HBSTATUS=`/usr/bin/ssh -i /home/takachan/.ssh/id_rsa takachan@${REMOTE} /usr/local/bin/sudo hastctl status disk0 | grep ^disk0 | awk '{print $3}'`

if [ ${HBSTATUS} = 'primary' ];then
#    echo "sudo hastctl role secondary disk0"
    /usr/local/bin/sudo hastctl role secondary disk0
fi

 
再起動直後はセカンダリで良いので、起動時にステータスを更新してしまう。と、いう感じです。

 
さてと、これで carp+hast の冗長構成完了です。

Linux 方面の pacemaker と corosync、そして drbd の場合はスクリプト書かないんだけど、設定が面倒。 FreeBSD の場合は設定は簡単なんだけど、アプリ側に仕掛けとか何もなし。

どちらが良いかは自分で決めてくだされ。
ただ、これで冗長構成が完了したので、ヨシヨシ。と、いう感じかな。

11月 022024
 

2022 年に AQUOS sense6 SH-M19モトローラ moto g52j 5G を購入しました。
モトローラ moto g52j 5G のほうはまだ良かったのですが、AQUOS sense6 はひどいスマートフォンだった・・。小さいのはまだ良かったのだけど、CPU 的に遅すぎてお話にならない。しかし、我慢しつつ、使い続けました。

そこに iPhone15 を 2023 年 11 月に購入して、三台体制で布陣を敷いておりました。

 
AQUOS sense6 の後継として、何か良い端末が無いかと探していたのですが、それなりに結構な値段がする。と、いうのがあるし、大きいサイズだし・・。 Xperia10 VI など良さそうだと思いつつも高いので、悩んでいたところに、Y!mobile でとてつもない値段で、ハイミドルな端末が売りに出ていたので、ここはひとまず行ってみんべぇ。ということで購入してみました。

Libero Flip というヤツ。最近は機種変更でも 9,800yen という値段で出ているのでハイミドルでもこの値段であれば、『多少失敗しても良いやぁ。』と、いうことで飛びつきました。

今回のエントリは Libero Flip についてまとめたものになります。目次はこんな感じかな。

  • Y!mobile での機種変購入
  • SIM カードの検討
  • サイズと折りたたみ
  • 機能(サブ画面とバッテリの設定他)は?
  • 実際に使ってみた感想

では、順に見ていきましょう。

 

・Y!mobile での機種変購入

僕は Y!mobile を既に契約していて、現在は iPhone15 で利用しています。契約はシンプル S で、月々 2,000yen ちょい。奥さんが「家族割引サービス」を適用していて、割安でシンプル M の契約をしています。ここ、重要ですからね。僕の契約は『シンプル S』で奥さんは『シンプル M』です。

今回、機種変更でも Libero Flip が 9,800yen で購入できる。と、いうので、購入しました。
購入時「Libero Flip ガチャキャンペーン」と、いうのをやっていて、PayPay ポイントをもらうことができます。僕はガチャで 1,000 ポイントゲットしました。

その他に購入時にヤフーショップで購入すると PayPay ポイントが上乗せされたり、届いた Libero Flip の箱の中から Libero Flip の専用ケース 1,900yen 相当のプレゼントクーポンが出てきたりとかで、トータルで大体の実質 5〜6,000yen 前後で購入できるのではないかと思われます。

購入時の金銭的な障壁は以外に低いです。価格.com のクチコミでは画面が割れるとか液晶割れて液漏れとか、結構悲惨なレビューがあるのですが、この値段なら、まぁ、許せるかな。

液晶が壊れるのが早いか、OS のバージョンアップ切れが早いか? 的に考えても、まぁ、妥当な値段かと。

 
さてと、値段の話はここまでにして、届いた本体は AQUOS sense6 の後継ですので、そのつもりで移行作業開始です。

最近の Android は新旧二つのスマートフォンを USB ケーブルで接続すると、データ移行してくれるみたいですね。 Google へのバックアップも不要でした。

今回は AQUOS sense6 と Libero Flip を USB Type-C ケーブルで接続して AQUOS sense6 からアプリや設定情報などがドドドと Libero Flip の中に入りました。非常に簡単で、嬉しかったです。
まぁ、その後は多少の微調整と、言うか、設定も必要ではありますが・・。

で、このときに感動と、いうか、関心したこと。AQUOS sense6 と Libero Flip を USB Type-C ケーブルで接続しているとき、なんと!! AQUOS sense6 側は充電されていますっ!! つまり Libero Flip はモバイルバッテリー的な利用方法もできる。と、いうことですね。それはすごいっ!!

とは思うのですが、考えてみると Libero Flip のバッテリーの持ちはあまり良くないので、他のデバイスの充電に活用できてもなぁ・・。と、いう感じ。まぁ、そーいうことで・・f(^^;;。

 

・SIM カードの検討

開封から、データ移行が完了しましたので、SIM カードを入れようと思います。

Y!mobile の機種変更では、対象端末の他に新しい SIM カードも一緒に送られてきます。今まで利用していた SIM カードから切り替え作業が発生します。

写真は左から、今回機種変更する AQUOS sense6・今回購入した Lbero Flip 、 そして、現在 Y!mobile で利用中の iPhone15。上に乗っている SIM は今回 Lbero Flip を購入したときに一緒に付いてきたモノ。これは iPhone15 に入れる予定。

Y!mobile というか SoftBank の SIM カードというのは都市伝説的なお話があって『iPhone で利用していた SIM カードでは Android では利用できないので SIM カードを交換する必要がある。』んだそうな。ほんまかいな?

今まで iPhone15 に入っていた SIM は n111 でした。今回送られてきたのは n161。これは、iPhone と Android の両方で利用可能なんだそうで、まぁ、安心と言えば安心かな。

 
と、いうことでややこしい SIM カードをどの端末に何を入れるか。今回の登場人物はこんな感じ。

  • iPhone15 : 現在 Y!mobile の SIM カードで利用中
  • AQUOS sense6 : シェアプラン の SIM カードと povo2.0 eSIM の DSDV で利用中
  • Libero Flip : 今回機種変用に購入した端末

 
まず、iPhone15 に入っていた SIM カードを抜いて、Libero Flip 購入時に送付された SIM カードを入れます。その後切り替え作業を実施して iPhone15 は無事に新しい SIM カード(n161 の番号)で無事に動作しました。

さてと。今回機種変更名目で購入した Libero Flip にはどの SIM を入れるか? AQUOS sense6 で利用していたシェアプランの SIM カードを入れることにします。

そもそも、「シェアプラン」とはなんぞや? Y!mobileではシンプル M/L を契約している人は無料でデータ専用 SIM を最高 3 枚まで利用できるのです。シンプル M/L のギガを追加の SIM カードでシェアしつつ利用できるオプションです。

以下が参考になります。

子回線専用プラン(シェアプラン)

SoftBank は SIM の発行枚数が増えるので嬉しいのでしょうな。うちとしては、上で書いた奥さんの『シンプル M』にシェアプランで SIM を 2 枚もらっています。それが現在は AQUOS sense6 に入っているのですが、これを今回購入した Libero Flip に入れることにします。

あ。ちなみに「シェアプラン」の SIM カードはデータ通信専用で、電話できません。SMS は SoftBank からの通知が来るだけで、他の人とはメッセージ交換できません。まぁ、良いか。と、いう感じ。

 
あと、 Libero Flip は Y!mobile から発売されている端末なので、他キャリアの周波数に対応している必要は全く無い。割り切っているようです。

今回は povo2.0 の eSIM を入れる予定なので、確認の意味もこめて au の動作確認端末一覧サイトを見て『機種を絞り込む』に “Libero Flip” を入れて検索すると表示はしてくれます。ステータスは △ で、かつ、赤字で『対応エリア△:バンド18/26(800MHz帯)に非対応です。利用可能エリアが限られるため対応端末のご購入、ご利用をお勧めします。』と書かれています。
『動きません。』や『対象外。』とは、書いてないです;-)。

と、いうことで eSIM は povo2.0 を入れることにてみます;-)。 データ転送は Y!mobile で、通話と SMS は povo2.0 な環境を Libero Flip に構築するのであります;-)。

Y!mobile と povo2.0 データ通信にどっちを利用するかは下の「データ通信用のデフォルトSIM」で 1 か 2 を選択すれば良いだけなので、非常に操作が簡単です。 AQUOS sense6 の頃は SIM を切り替えるの、随分ナンギしたので、このラクチンさは嬉しい。

ちなみに povo2.0 で 1 週間 1 ギガのトッピングを購入して動作確認してみました。

au のメインバンドである 18 と 26 が利用できないにもかかわらず、高速で通信できます。かつ、電波をよく拾って、アンテナがちゃんと立ちます。

家の近所とか、秋葉原辺りで povo2.0 を試しましたが、Band 1, 3, 41 辺りで電波を拾ってくれて、かつ高速です。家で深夜に試したら 5G に接続していて google のスピード計測サイトで計ったら 200Mbps 越えました。
あぁ・・。ギガが消えていくーーっ!!

まだ、山間部や海上(僕は海釣りをする人なのよ;-)に行って試してはいませんが、都内であれば特に問題なく利用できました。ある意味『au って凄いっ!!』と感じますね。

 

・サイズと折りたたみ

サイズはでかいっ!! とりあえず、開いたときの大きさ比較。
moto g52j 5G とほぼ同じ大きさなのです。だったら、特に畳んで持ち歩くことないじゃん。と、いうことになりそうですf(^^;;。

パタパタ閉じたり開いたりして液晶画面にインパクト与えるより、開いたまま使って、寿命を伸ばしたほうがフツーのスマートフォンとして使ったほうが良いのでは?と思います。

閉じたときは厚くなるので、開いたまま利用するとなると非常に薄いスマートフォン。と、いうことになります。

 

・機能(サブ画面とバッテリの設定他)は?

あまり、閉じて利用することを想定してない(サイズ的に moto g52j 5G と同じ。と、いうことなので。)のですが、おサイフケータイで電車の改札口を通過するときは閉じていたほうがかっこ良いよなぁ。とか・・。

閉じているとに効果的に機能するのがまぁるいサブディスプレーですが、現在利用できる機能はこれしかありません。

合計六個ですね。唯一色々なアプリに対応しているのが『音楽』ですかね。音楽プレーヤーでは現在再生中の曲が表示されたりします。あと、他のサイト見たりしていると YouTube も表示できている。と、いうのもありました。

僕的には SMART USEN と U-NEXT アプリ、 Musicolet の動作確認をしてみましたが、これら全てサブディスプレーに再生中のタイトルを表示してくれました。

写真は SMART USEN で落語チャンネル聴いているときの動作です。当然曲飛ばしは機能しません。

U-NEXT アプリで再生中の動画のタイトルは表示しますが、実際には閉じている状態なので見ることはできませんf(^^;;。

 
バッテリーの消費について、特に気にしている OS なようで(TZE の Android OS は MyOS というらしい)バックグラウンドで動作しているモノや長時間常駐しているアプリは比較的頻繁に kill されているように感じられます。
あと、画面のリフレッシュレート 120Hz 設定が消えて 60Hz に戻ってしまうのにも、バッテリー設定が影響しているような気がします。

僕が頻繁に kill されていたのは iOS で言うことろの「ダイナミックアイランド」相当機能を実現する DynamicSpot や「アシスティブタッチ」相当機能を実現するアプリなどもバシバシ kill されます。

この機能はもしかしたらオフにしたほうが平和になれるかもしれません。

 

・実際に使ってみた感想

ミドルハイというランクの端末。Snapdragon 7 Gen1 は速いのか?とか思ったけど、体感的には moto g52j 5G のほうが速いと感じるかなぁ。と、いうか moto g52j 5G はスゲーな。ずっと使い続けてたい。と、思わせる性能ですが、今回購入した Libero Flip はそれに次ぐものだと思います。あ。iPhone15 は別次元の商品です;-|。

 
折りたたみの液晶画面ですが、曲がる部分を上から下に指でなぞっていくと、確かに溝がある感じがしますが、特に気にならないです。安定したガラス面ではなく、厚手のビニールを触っているような感じ?表面はツルツルしているので滑りは良いです。

 
最初のほうでも書きましたが、 Android のサポートが 2 年だと想定して、パカパカ開いたり閉じたりして、液晶が 2 年持つのか? これはもう判らないなぁ。なるべく閉じないようにして利用するかな。と・・。

値段 9,600yen で、ここれだけのスペック、性能は大したモノです。本当に。

2月 052024
 

以前のエントリで「bhyve の ubuntu で Intel Wi-Fi 6 AX200 を利用する。」と、いうエントリを書きました。そして、一個前のエントリ「NiPoGi GK3Pro ミニ PC 購入。」では MINI PC には VMware ESXi ではなく bhyve で仮想環境を構築した。と、書いています。

bhyve は基本的にコマンドをチマチマ打っていく状態だったので『GUI で簡単に仮想サーバ構築とかできないのかなぁ?』と思って探してみるとあるようですねぇ。 FreeBSD の ports にはなっていないようですが、GitHub からダウンロードできるようです。

https://github.com/DaVieS007/bhyve-webadmin

ここから bhyve-webadmin-master.zip をダウンロードして展開します。
今回ダウンロードしたのは BVCP という bhyve をウェブベースの GUI で管理できるものになります。
インストール先の FreeBSD では bhyve の環境が整っている必要があります。上記の「bhyve の ubuntu で Intel Wi-Fi 6 AX200 を利用する。」のエントリ中の『1. FreeBSD 母艦側の設定』の部分の設定をまず先済ませておく必要があります。

 
1.インストール
展開後にその中にある install.sh を実行します。以下、簡単なテキストキャプチャです。
指定するのは唯一データを管理するディレクトリを指定するのみです。今回は /opt/bhyve を指定しました。

# unzip bhyve-webadmin-master.zip
<略>
# cd bhyve-webadmin-master
# ./install.sh

                    ██████╗ ██╗   ██╗ ██████╗██████╗ 
                    ██╔══██╗██║   ██║██╔════╝██╔══██╗
                    ██████╔╝██║   ██║██║     ██████╔╝
                    ██╔══██╗╚██╗ ██╔╝██║     ██╔═══╝ 
                    ██████╔╝ ╚████╔╝ ╚██████╗██║     
                    ╚═════╝   ╚═══╝   ╚═════╝╚═╝     

            Bhyve Virtual-Machine Control Panel under FreeBSD
        
 N  2024-02-05 09:38:25 | BVCP | Initialising BVCP-Backend 1.9.8-p9 Application

  [>] Generating Entropy ... [9BA2FE3E0EC4B6D72CF2E6760FF5B0AA]

 Welcome to initial setup menu!
 The Software is located at: /var/lib/nPulse/BVCP

 The Software is producing pseudo filesystem scheme for virtual machines using symlinks
 Where to create metadata, iso_images, database, config, logs: (Does not need much space), default: [/vms]_> /opt/bhyve
<略>
 N  2024-02-05 09:40:08 | BVCP | Initialising BVCP-Backend 1.9.8-p9 Application
 N  2024-02-05 09:40:10 | BVCP | Starting Database ...
 (!) Admin Credentials recreated,
   - User: admin
   - Password: LmZH4kXD

 N  2024-02-05 09:40:10 | SW | Program exited gracefully...
Installation Finished!
Navigate: https://[your-ip]:8086
#

 
BVCP のデータ管理用ディレクトリを指定してインストールすると上記のようになって終わります。ウェブログインするパスワードが表示されているので覚えておきましょう。

インストール先についてですが、以下のようになっています。

  • BVCP のベースプログラムは /var/lib/nPulse/ にインストールされます
  • /etc/rc.conf に bvcp_enable=”YES” という文字列が追加されます
  • /usr/local/etc/rc.d/ 内に bvcp-backend bvcp-frontend bvcp-helper の三つのファイルが追加されます
  • データ保存先の /opt/bhyve/ が作成されます

 
上記のディレクトリ、ファイルを全て削除することによりまっさらな状態(uninstall した状態)となります。

 
2.仮想マシン作成前の準備
インストール後ウェブブラウザから https://wanchan.running-dog.net:8086 などとアクセスします。

インストール時に控えていた admin とそのパスワードでログインし、まずは右上をクリックしアカウントの管理として Account Settings から自分のメールアドレスを登録しましょう。

 
新規にアカウントを作成したら admin をログアウトして、新しいユーザでログインし直してと。
仮想マシンが利用する HDD イメージを保存するストレージを指定します。大容量のディレクトリを指定しましょう。

NFS 領域も指定できます。Active 系 bhyve 母艦がダウンすると NFS 上にゲスト OS のイメージがあるので Standby 系を Active にしてゲスト OS を起動できたりするので冗長構成が取れそうですね。

 
次にネットワークを設定します。
VLAN などの設定は母艦の FreeBSD 側で先に設定しておく必要があります。必要であれば設定しておきましょう。この辺り VMware ESXi 的に言うと vmnic0 に VLAN 単位の vSwitch を生成して、それを仮想マシンで利用する。みたいな雰囲気ですね。
母艦の FreeBSD が利用できないネットワークインターフェースは当然 bhyve でも利用できません。
pptdevs 経由で仮想マシン側にデバイス渡したくても BVCP の UI にデバイスを渡すオプションは今のところ無いようです。

ネットワークを作成する場合は em0 とか re0 などを一個含めておくと、bridge300 番台を生成してくれます。母艦側の FreeBSD の VLAN インターフェースも指定可能です。
その後、仮想マシンを作成したタイミングで tap300 番台を自動生成してくれ、かつ、それを bridge として追加してくれるようになります。
母艦側の NIC を含めないネットワークを作成すると、それは裏 LAN 的な、外に出ていかないネットワークとなります。

これで、アカウント・ストレージ・ネットワークの設定が完了しました。

 
3.仮想マシン作成
ここまで来たらいよいよ仮想マシンの追加をします。一番最初は OS の雛形を指定することになります。

対応している OS は FreeBSD・Linux・Windows になります。まぁ、それだけあれば十分か? macOS は FreeBSD かな?デバイスの形態が全く違うけど・・。 VyOS は Linux ですな。では Solaris は? まぁ、その話は置いといて・・f(^^;;。

雛形を作成したら次に作成した OS を選択して詳細を設定していきます。まぁ、GUI なので直感的に設定ができますよね。

色々細かい設定とかありますが、まずは OS をインストールしなければならない。
Virtual Hardware のところでは CPU 数やメモリ容量の変更ができます。

インストールのために CD-ROM Drive を指定します。ISO イメージを、データを管理するディレクトリ内に設置します。今回の環境での場所としては /opt/bhyve/iso_images/ になります。このディレクトリ内に保存します。

次に HDD イメージを作成します。登録したストレージ内に必要な容量を選択します。
その次に追加された HDD イメージの詳細設定を行います。

Name / Description は書いておいたほうが良いでしょう。 LUN Slot は気分的な設定値ですが、仮に HDD を複数接続したときに番号をずらしたほうが良さそうな雰囲気ですよね。
Attach Disk にチェックを入れると OS 側で HDD を認識するようになります。

作成した HDD は 今回の環境では NFS 領域の /media/Strage/ に vm_images というディレクトリが作成され、その中に格納され /media/Strage/vm_images/ubuntu01_disk01.img になります。 仮想マシン登録時に指定した Machine Name の ubuntu01 (小文字になる)と Name / Description で指定した disk01 を合わせたファイル名になります。

最後にネットワークを指定します。
自分が接続したいネットワークの指定と、ドライバを指定します。ドライバは FreeBSD 的に言うと vtnet0 と em0 の二つが選べます。 WindowsOS をインストールするときは Intel Pro 1000 を指定したほうが良いかもです。

 
これで設定がぜんぶ完了しましたかね。

 
4.いよいよ起動
では左上にある緑色の Start ボタンを押しましょう。そして起動後に現れる VNC Console をクリックすると別ウィンドでコンソールが表示され OS がブートするところを確認できます。その後 OS のインストールを進め、再起動してインストール完了。
apt -y update などで最新の OS 状態にしたり apt-get install でパッケージを色々インストールして最低限の環境を構築すれば良いですね。

ここで一旦 OS を停止して /media/Strage/vm_images/ubuntu01_disk01.img をバックアップしておけば、もう一個 OS を作成したいときにタネ用 HDD として利用できます。
新規に ubuntu02 とかを作成するときに Create Virtual Disk のところでうまいこと指定することができます。

あと、起動時に毎回コンソールに入る状態になっているのですが、一番上の Options の中の Wait for console: を No にすると、コンソール画面を開く必要はなくスルっと起動するようになります。

 
自分で作成した環境で、コマンドベコベコ打って仮想マシンを作成していたとき、WindowsOS は中々起動できなかったのですが BVCP を利用すると簡単に起動させることができます。
母艦側には潤沢な資源が必要になりますが、僕が試してみたところ Windows11 Pro と Window Ssever 2019 が起動できて動作しています。
まぁ、Windows11 の場合は BypassTPMCheck と BypassSecureBootCheck は必須になりますが、ここでは省略します;-)。

とまぁ、比較的簡単に bhyve を利用したウェブ UI の仮想環境が構築できました。

 
今回の BVCP を利用した bhyve 環境は、新規の仮想環境の構築となります。今までコマンドベースで自分の趣味を反映した bhyve 環境で用意したモノを再利用しようとしてもほぼ利用できません。
例えば BVCP 環境下で作成した FreeBSD のディスクイメージを自分がコマンドベースで作成した bhyve 環境に持っていって起動しようとしても、ブート時のデバイス認識のところでエラーになって起動しなかったりします。その逆もしかりです。

今までのコマンドベースで構築した環境・仮想マシンを捨てて、新しく BVCP 環境に移行するか、コマンドラインベース環境と同居するか悩みます。が、やっぱ GUI 環境のほうが楽だね。になると思いますが・・f(^^;;。

 
5.そろそろエンディング
前回のエントリでは Intel Celeron N5105 な NiPoGi GK3Pro ミニ PC で VMwareESXi が動作しないような環境(動作したとしてもデバイスを認識しないような PC の構成)においても FreeBSD が動作するのであれば bhyve による仮想環境が構築可能である。と記載しています。
そこに今回 GUI ベースで bhyve を動作させることにより、ますます bhyve のしきいが低くなりました。これで楽しさが広がりますねぇ;-)。

これは僕の仮想マシン一覧になりますが、母艦は FreeBSD/amd64 14.0-RELEASE で動作しております。仮想マシンとして動作している freebsd03 は FreeBSD/amd64 13.2-RELEASE で、現在起動中です。
この freebsd03 内では qemu を利用した chroot で中に入る環境があって、そこは FreeBSD/arm64 13.2-RELEASE の環境が構築されており ports のコンパイルなどを行っております。

こんな非常にややこすぃーい環境も構築できるのが良いっ!! ;-P

1月 272024
 

前回の Beelink MINI S 購入に引き続き、もう一個 MINI PC を購入してみしました。

と、いうのも比較的小型の OS が可動する装置としては Raspberry Pi を持っているのですが、どうも FreeBSD 14.0-RELEASE を arm7 とか arm64 で動作させるのに嫌気が差してきて『素直に amd64 で良いじゃん。』と、なり、今回の MINI PC の購入となったのでありました。

今回購入したのは NiPoGi GK3Pro ミニ PC というらしいです。これは Intel の第 12 世代プロセッサである Intel Celeron N5105 を搭載しています。メモリは 8GB で SSD は 256GB です。このスペックで 15,000yen 前後なので、随分と安い。今だと Raspberry Pi 4 とかと同じくらいではないかなぁ・・。値段的にも一緒であれば、 arm64 でなくとも良いよねぇ。みたいな・・。

ただ、値段が安いだけのことはあります。SSD は NMVe ではなく、SATA 接続の M2.SSD です。

安さの秘訣を一覧にしてみましょう。あ。全て FreeBSD/amd64 14.0-RELEASE で認識した内容です。

  • SSD は上にも書いた通り M2 SATA で 256GB の容量
  • サウンドカードは USB 接続の C-Media Electronics Inc. USB Audio Device で snd_uaudio.ko で認識
  • Bluetooth も USB 接続で Realtek Bluetooth Radio で ng_ubt.ko で認識されますが利用できるかは知りません
  • WiFi は Realtek RTL8821CE で if_rtw88.ko で認識できますが、まだ利用できません。これは PCIe にぶるさがっているっぽい

 
この辺りで基本的にプライスダウンしている感じでしょうか。ほとんどのデバイスが USB にぶるさがっているので BIOS の画面から Disable にできません。『FreeBSD で利用できないデバイスなんて要らないよー。』とか思って BIOS 画面覗いても Disable にする項目がないです・・。orz

pciconf -lv してみると none が 11 個もありますが、これは Intel の Celeron プロセッサを使っている PC のパターンでしょうか。

あと、悲しいことに、最近の PC のはずなのに USB-C ポートがありません。これは結構ショックでかい・・。orz。

 
この PC の使い方
さてと。気を取り直して・・。
例の如く、この手の中華製 MINI PC は付属の WindowsOS の出どころが非常に怪しいので、サクっと削除。
Windows Product Key Viewer という Windows のプロダクトキーを確認するアプリでチェックしてみると、やはり “B” のみが並んでおりました。これは Beelink SER4 を購入してチェックしたときにと一緒ですね。

しょーがないので FreeBSD 専用の PC にすることにしました。チョイスした OS は FreeBSD/amd64 14.0-RELEASE です。 CPU の Intel Celeron N5105 には Intel のバーチャリゼーション機能が搭載されているので vmm.ko を kldload した場合は bhyve で仮想環境が構築でき、また、起動時に vmm.ko を kldload していなければ virtualbox が起動できます。

この手の MINI PC って VMware ESXi が動作しなかったり、動作してもデバイスを認識してくれなかったりするので FreeBSD をインストールして仮想環境を構築するのはアリです。まあ、 VMware ESXi は Broadcom に買収されて、その後無料版の VMware ESXi がなくなることになるので FreeBSD+bhyve は今のところチョー注目株です;-)。
AlmaLinux+Docker の環境よりしきいが低いですかね。

ただ、その場合、メモリ 8GB はちょっと量が少ないので 16GB に拡張したほうが良いですかね。
Intel の Celeron N5105 のサイトを見ると対応メモリは 16GB までのようです。

HDMI の上の黒いパーツのネジを一本外して、横にスライドさせると内部にアクセスできます。

MINI PC の上のフタを開けると 2.5 インチの SATA SSD が装着できます。その下にメモリスロットが一個あって default で 8GB のメモリが入っいます。メモリ換装は簡単そうです。 M2.SATA SSD を換装するか、換装せずに 2.5 インチ STAT SSD を増設するか、微妙ではありますね。

ちなみに、上記の写真に写っているのは銅板ではありません。ただ単にテカリのあるプラスチックです:-|。

 
あ。そーそー。この MINI PC は、一個目の HDD として追加の 2.5 インチ STAT SSD が認識され、内蔵の M2.SATA SSD は二個目として認識されます。ちょっとーっ!! この辺りもおかしいよねぇ・・。 orz

以下は mount コマンドの結果。

/dev/ada1p2 on / (ufs, local, soft-updates, journaled soft-updates)
devfs on /dev (devfs)
/dev/ada1p1 on /boot/efi (msdosfs, local)
/dev/ada1p3 on /home (ufs, local, soft-updates, journaled soft-updates)
/dev/ada1p4 on /usr (ufs, local, soft-updates, journaled soft-updates)
/dev/ada1p5 on /var (ufs, local, soft-updates, journaled soft-updates)
/dev/ada0p1 on /opt (ufs, local, soft-updates)
<以下略>

 
何もかも怪しい筐体です・・。orz。

 
FreeBSD もインストールしたし virtualbox に WindowsOS もインストールしたので、これは外に持ち出しも OK っぽい。
仕事でデータセンタ行ったとき、IP アドレス付加したあとに inetd 経由で sredird が動作すればポートサーバ風に利用できてコンソール接続も可。なんてこともできるし。

小さいので夢が膨らみます;-)。

 
最後にですが、全然デバイスが認識できていない pciconf-lv の結果を添付してこのエントリは終了とします;-)。

hostb0@pci0:0:0:0:      class=0x060000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4e24 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = HOST-PCI
vgapci0@pci0:0:2:0:     class=0x030000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4e61 subvendor=0x8086 subdevice=0x2212
    vendor     = 'Intel Corporation'
    device     = 'JasperLake [UHD Graphics]'
    class      = display
    subclass   = VGA
none0@pci0:0:4:0:       class=0x118000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4e03 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Dynamic Tuning service'
    class      = dasp
xhci0@pci0:0:20:0:      class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4ded subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
    subclass   = USB
none1@pci0:0:20:2:      class=0x050000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4def subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = memory
    subclass   = RAM
none2@pci0:0:21:0:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Serial IO I2C Host Controller'
    class      = serial bus
none3@pci0:0:21:1:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de9 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Serial IO I2C Host Controller'
    class      = serial bus
none4@pci0:0:21:2:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dea subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
none5@pci0:0:22:0:      class=0x078000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de0 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Management Engine Interface'
    class      = simple comms
ahci0@pci0:0:23:0:      class=0x010601 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dd3 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = mass storage
    subclass   = SATA
none6@pci0:0:25:0:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc5 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
none7@pci0:0:25:1:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc6 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
sdhci_pci0@pci0:0:26:0: class=0x080501 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc4 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = base peripheral
    subclass   = SD host controller
pcib1@pci0:0:28:0:      class=0x060400 rev=0x01 hdr=0x01 vendor=0x8086 device=0x4db8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-PCI
pcib2@pci0:0:28:1:      class=0x060400 rev=0x01 hdr=0x01 vendor=0x8086 device=0x4db9 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-PCI
none8@pci0:0:30:0:      class=0x078000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = simple comms
none9@pci0:0:30:3:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dab subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
isab0@pci0:0:31:0:      class=0x060100 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4d87 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-ISA
hdac0@pci0:0:31:3:      class=0x040300 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake HD Audio'
    class      = multimedia
    subclass   = HDA
none10@pci0:0:31:4:     class=0x0c0500 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da3 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake SMBus'
    class      = serial bus
    subclass   = SMBus
none11@pci0:0:31:5:     class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da4 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake SPI Controller'
    class      = serial bus
re0@pci0:1:0:0: class=0x020000 rev=0x15 hdr=0x00 vendor=0x10ec device=0x8168 subvendor=0x10ec subdevice=0x0123
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet
rtw880@pci0:2:0:0:      class=0x028000 rev=0x00 hdr=0x00 vendor=0x10ec device=0xc821 subvendor=0x10ec subdevice=0xc821
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8821CE 802.11ac PCIe Wireless Network Adapter'
    class      = network

 
では。さようなら。