Dell XPS 13 9300でNetBSD/amd64を使う

仕様については、以下に記載されている。 https://www.dell.com/support/manuals/jp/ja/jpdhs1/xps-13-9300-laptop/xps-13-9300-setup-and-specifications/specifications-of-xps-13-9300?guid=guid-7c9f07ce-626e-44ca-be3a-a1fb036413f9&lang=en-us

NetBSD/amd64 9.99.70を利用している。 このラップトップは、UEFIブートモードしかサポートされていない。 インストール時は、いろいろ問題があったのだが、自分の持っている接続USB stickやUSB-Ethernetアダプターの問題であったりしたので、基本的には問題ないはずである。

サポート状況概要

ビデオ
DRM/KMSのサポートはされていない。genfb(4)を使うことになる。genfb(4)で4K LCD表示可能。OpenGLは、LLVMpipeが使えるので10 fpsくらいでの描画は可能。genfb(4)ではUSB Type-Cコネクター経由での外部ディスプレイへの出力はできない。
Bluetooth
ubt(4)として認識されるが、ファームウェアを読み込む必要があるホストコントローラーであるようで、利用不可。
Wi-Fi
サポートされていない。OpenBSDのiwx(4)デバイスドライバーを移植すれば動くかもしれない。
オーディオ
hdaudio(4)でサポートされている。しかし、ヘッドセットジャック接続の再生でノイズが激しい、ヘッドセットジャック接続のマイク入力が認識されない、と言う問題がある。
タッチパッド
pms(4)のSynapticsサポートで問題なく利用できる。
microSDカードリーダー
rtsx(4)で認識されるのだが、カードを挿入するとsdmmc(4)で有効化エラーが出て利用できない。
ウェブカメラ
可視光も赤外線も両方とも利用できない。uvideo(4)がいけないのではなく、xhci(4)がアイソクロナス転送がサポートされていないのが問題であるようだ。
USB Type-C
左右でxhci host controllerが別々になっているが、両方とも問題なく利用できる。
指紋センサー
認識されない。
タッチスクリーン
認識されない。dwiic(4)が認識されないが、単純にPCI vendor ID/product IDを追加しても動作しなかった。
Intel Quick Sync Video
genfb(4)を使っている時は利用できないようだ。
Thunderbolt
利用できるハードウェアを持っていないので確認できない。

設定

BIOSで以下の設定をする必要があった。

  • MVMeの接続について、SATAの設定でRAID onになっているのをAHCIにすることが必要だった。AHCIに変更することで、nvme(4)とld(4)として利用可能になった。
  • Secure Bootを無効化する。
  • 内蔵ウェブカメラはBIOSで無効化できるので、どうせ利用できないので無効化しておいた。

Windows 10で以下の設定をする必要があった。

  • プリインストールされたWindows 10のDell Power Managemenrtアプリケーションで、サーマル管理画面で「超高パフォーマンス」に設定した。しかし、これでもCPUの最大動作周波数は3.5 GHzになっているように見える。CPUの仕様上はIntel Core i7-1065G7なので3.9 GHzなのだが、そこまでは上がらないように制御されているようだ。

課題

日常で使うには、以下ができるとうれしい。

  • Wi-Fiアダプターをサポートする。
  • Bluetoothホストコントローラーをubt(4)でサポートする。
  • タッチスクリーンをサポートする。
  • Intel統合CPU用のLinuxのデバイスドライバーを移植し、ハードウェアアクセラレーションを有効にする。
  • オーディオについて、ヘッドセットジャックでの音声出力のノイズ発生を解消する。
  • オーディオについて、ヘッドセットジャックでの音声入力ができるようにする。

おわりに

BIOSにもいろいろな設定があって、細かく設定できる良いラップトップであると思う。 画面も綺麗な表示で良いと思う。 キーボードは、home/end/pageup/pagedownが独立していないの以外は、タイプする感覚も良いように感じた。

Firefox on NetBSDで、Microsoft Teamsの会議機能は利用できない

いくつかのオンライン会議システムが、Firefox on NetBSDで使えるか試している。ZoomとCisco Webexも試しているので、別途書いておくつもりだが、 まずはMicrosoft Teamsについて書いておきたい。

2020年8月13日の時点では、ウェブブラウザーからの会議参加は、Microsoft Edge (EdgeHTML、Chromium)と、Google Chromeしか対応していないとのメッセージが出ていた。 User Agent StringをGoogle Chrome for Windowsのものに変更しても、会議を開始することはできなかったので、Firefox for NetBSDから参加はできないと考えて良さそうだ。

HP Spectre x360 13-inch ae019TU上のNeBSD/amd64-currentのNVMMでMicrosoft Windows 10 x86_64 2004を動かす

私の常用していたHP Spectre x360 13-inch ae019TUというラップトップでは、 これまでNVMMを使ったqemu上でWindows 10を起動させることができなかった。

しばらく試していなかったのだが、2020-05-27時点のNetBSD/amd64-currentのNVMMで試したところ、 問題なくWindows 10 x86_64 2004を起動させ、インストールし、利用することができた。

Mozilla Firefoxのuser agent switcherアドオン

Mozilla Firefoxのuser agent stringを変更するアドオンで以下のような機能があるものを探していた。

  • 有名なウェブブラウザーのuser agent stringのプリセットが用意されていること。
  • ドメイン名ごとにデフォルトのuser agent stringを設定できること。
  • 簡単に素のuser agent stringに戻せること。

addons.mozilla.orgには数多くのuser agent stringを変更するアドオンがあり、しかも皆名前が一緒なので困ってしまうのだが、 User-Agent Switcherというのが、私のニーズには合っていた。

タッキングできるマックス製ホッチキスHD-10NXを買った

180度開いて画鋲代わりに針を打ち込むのをタッキングと言うらしい。 これをやりたくて、マックス製ホッチキスHD-10NXとNo.10 1Mステンレス針 (MS91194)を購入した。 これで固定はできるようになった。

Google Domainsでドメイン名を管理し、Gmailからの独自ドメインでの電子メール送信を設定する

はじめに

独自ドメインで電子メールを送受信したいと思っていたのだが、現代の基準に合うようなSMTPサーバーを立ち上げて維持するのは、 それほど頻度がない電子メールの送受信を実現する対価としては、割に合わないと感じていた。

そのドメイン名をGoogle Domainsで管理していると、 @gmail.comのGmailアカウントで電子メールの送受信ができるということなので試してみた。

また、G Suiteのアカウントでは、この機能は利用できないようである。そもそも、Google Accountページで App passwordを設定できない。

Google Domainsへドメイン名を移管する

今回利用するドメイン名は、お名前.comで取得していた。お名前.comでの1年間の料金は、直近は1,280円であったが、Google Domainsでは1,540円である。 だが、privacy protectionやGmailと連携した電子メールの取り扱いの対価と考えると、差額は納得できると考えた。

お名前.comから移管する際に、移管元に支払う料金は存在しない。管理画面でAuth codeを取得しておき、Google Domainsで移管を申し込みすれば良い。 Google Domainsから移管の申し込みをすると、10分後くらいにお名前.comから移管を承認するかの確認電子メールが来る。 電子メール中のリンクから移管を承認すれば、間も無くGoogle Domainsに移管が完了する。 Google Domainsでの移管申し込み時には、4日後の日付が完了予定日として提示されているが、1時間もかからずに完了できた。

電子メール転送の設定をする

Google DomainsのEmailメニューより、Email forwardingの設定をする。 今回は、*@example.comから、example@gmail.comへの転送ルールを追加した。 これにより、アットマークより前の部分は何であってもexample@gmail.comへ転送されるようになる。

続いて、DNS MXレコードの設定をする。 私の場合には権威DNSサーバーは独自に運用しているので、bindのzoneファイルで言うと、以下のような内容を追加した。 この内容は、Google DomainsのDNSメニューのEmail forwardingの箇所に記載されている。

@       IN      MX      5       gmr-smtp-in.l.google.com.
        IN      MX      10      alt1.gmr-smtp-in.l.google.com.
        IN      MX      20      alt2.gmr-smtp-in.l.google.com.
        IN      MX      30      alt3.gmr-smtp-in.l.google.com.
        IN      MX      40      alt4.gmr-smtp-in.l.google.com.

ここで、info@example.comに電子メールを出して、Gmailのinboxに配送されることを確認した。

次に、info@example.comから電子メールを発信する設定をしていく。 基本的には、Send an email from your alias in Gmailの Google Domainsのサポートページの内容の通りである。 注意点としては、@gmail.comの電子メールアカウントで実施する必要があるということである。

おおまかな流れは以下のようになる。

  • GmailのGoogleアカウントで2-step verificationを有効にする。
  • App passwordでEmailのパスワード(16桁)を生成する。
  • Gmailの設定画面で16桁のパスワードを使いanother email addressを追加する。
  • info@example.comの電子メールのverificationに対応する。
  • まず、Googleアカウントが2要素認証を有効にしている必要がある。有効にすると、App passwordの設定が可能になる。 appとしてMailを、deviceとしてOtherを、Nameとしてexample.comと入力して、16桁のパスワードを生成する。 このパスワードはDoneをクリックすると再表示できないようだったので、必ずコピーして保存しておく。

    Gmailの設定画面のAccounts and Importタブより、Send mail asの部分でAdd another email addressをクリックして送信者を追加する。 ここで、Treat as an aliasのチェックボックスをチェックするのを忘れないようにするようにサポートページには書かれているのだが、効果が分からなかった。 SMTP serverはsmtp.gmail.comに、usernameは自分のGmailの電子メールアドレス、パスワードはさきほど生成した16桁のパスワードを 設定し、電子メールアドレスのverificationに対応すれば完了である。

    電子メールを送る際に、From電子メールアドレスを選択できるようになる。

    Windows 10 64-bit 2004にChromiumベースなMicrosoft Edge 84.0.522.52が自動的にインストールされた

    2020年8月6日の深夜に、Windows 10 64-bit 2004にChromiumベースなMicrosoft Edge 84.0.522.52が自動的にインストールされた。 随分前にWindows 10には展開されると予告されていたが、やっと展開されて来た。

    ActalisのS/MIME電子証明書を取得してみる

    年々、無料で取得できるS/MIME用の電子証明書は少なくなっているような気がする。 継続して提供されるサービスとなると、尚更である。

    イタリアのActalisという電子認証局が発行している S/MIME電子証明書を取得してみた。

    取得までの作業は非常に簡単で、流れは以下のようである。

  • Free Email Certificateのページから 電子メールアドレスを入力し、SEND VERIFICATION EMAILボタンを押して、その電子メールアドレスにverification codeを送信してもらう。
  • 電子メールアドレスに送られてきたverification codeを入力し、captchaも入力し、Step 2の規約類に同意した上で、2つの質問でI do not consentを選択する。 その上で、SUBMIT REQUESTボタンを押す。
  • 画面に表示されたpfx電子証明書ファイル用のパスワードを確認し、保存しておく。
  • 電子メールアドレスにzipアーカイブファイルに入ったpfx電子証明書ファイルが送られてくるので、先程のパスワードを使ってインポートする。
  • こうしてActalisから取得したS/MIME電子証明書はpersonal useに限定されている。またCommon Nameには電子メールアドレスが指定されている。有効期間は1年間だった。

    Git for Windows 2.28.0で日本語文字がパスに入っている場合に、quotepath=falseにしても文字化けする問題への対策

    Unicode filenames does not display correctly in 2.27.0 in status command #2734 という問題が報告されていて、Git for Windowsで日本語文字がパスに入っている場合に、MinTTY上ではquotepath=falseにしても文字化けする問題が、2.27.0以降で発生している。 Git for WindowsのGit本体ではなく、MinTTYコンソールの問題らしい。

    この報告では明示されていないように見えるのだが、experimental featureであるPseudo console supportを有効にすれば、手元のWindows 10 1903の環境では問題はなくなった。

    私的なNetBSDのfeature requests

    はじめに

    しばらくNetBSDを使っているのだが、あくまでユーザーで、自分が使う環境を整備する程度しかNetBSDには貢献できていないように思う。 pkgsrcも自分で使うプログラムをパッケージングするというのを越えて取り組めていないような気もする。

    NetBSDに興味を持ってくれる人は少ないように思うが、そもそも魅力がないとか興味がないとかいうのを除けは、どういう課題があるのか分からないから 参入しようという人が少ないという面も少なからずあるのかもしれないと思う。

    私のアイデアリストから、こういうものが実現されていてくれたらおもしろいのに、と思っているものを挙げておきたい。 まあ、本当は自分で取り組めは良いのだが、知識も経験も不足しているので、すぐには無理であろう。 誰か取り組んでもらえないかな…。

    feature requests

    順不同で記載する。 まあ、重要度などという指標は全く考慮していない。 どれも、私が実現されたら面白いな、私の役に立つなと思ったものを挙げているだけである。

    • Linuxの最新のDRM/KMSドライバーをNetBSDl-currentに移植する。--- Intel/Nvidia/AMDのGPUを少なくともサポートして欲しい。
    • xhci(4)でアイソクロナス転送をサポートする。--- uaudio(4)などを使うのに欲しい。
    • Video4Linux2サポートを最新のLinuxに追従する。--- FirefoxやChromiumでのWebRTCサポートがより新しいV4L2を前提としてvideo captureできないので。
    • libmで不足している関数を完備する。
    • VMware Workstation Playerの共有フォルダー機能をゲストとして使うファイルシステムをサポートする。
    • VMware ESXiで使われていvmfsファイルシステムをサポートする。
    • VIrtualBoxの共有フォルダー機能をゲストとして使うファイルシステムをサポートする。
    • VirtualBoxのホストとしてNetBSD/amd64をサポートする。
    • cramfsをサポートする。--- LinuxにあるCompressed Rom File System
    • NTFSを読み込み、書き込みできるようにサポートする。
    • exFATをサポートする。--- 特許の問題はある。
    • USB 3.0 debug portのホスト側のサポートを書く。
    • efiboot (bootloader)でuftdi(4)やuplcom(4)をサポートする。--- 新しいRS-232Cの内蔵されていないPCでもシリアルコンソールをbootloader時点から使いたい。
    • NetBSD/evbriscv32 --- 32ビットのRISC-V CPUを搭載した評価ボードのポート。qemu-system-riscv32に移植することから始められるのではないか。
    • NetBSD/evbriscv64 --- 64ビットのRISC-V CPUを搭載した評価ボードのポート。qemu-system-riscv64に移植することから始められるのではないか。
    • NetBSD/microblaze --- XilinxのMicroBlaze CPUを搭載した評価ボードのポート。qemu-system-lmicroblazeに移植することから始められるのではないか。
    • NetBSD/evbxtensa --- TensilicaのXtensa CPUを搭載した評価ボードのポート。qemu-system-xtensaに移植することから始められるのではないか。
    • NetBSD/evbor1k --- OpenRISC 1000を搭載した評価ボードのポート。qemu-system-or1kに移植することから始められるのではないか。
    • qemuのNVDIMMをsupportする。 --- 不揮発性DIMM
    • evdevをサポートする。 --- LinuxやFreeBSDにあるevdevのサポートをwscons(4)を並列してして欲しい。
    • wscons(4)で、マルチタッチをサポートする。 --- Microsoft Precision TouchPadやUSB touchscreenではmulti touchの信号を出力できる。
    • VMware PVSCSIをサポートする。--- 仮想化ストレージデバイス
    • NetBSD/s390 --- IBM System/390 (32ビット)のポート。Herculesに移植することから始められるのでないか?
    • NetBSD/s390x --- IBM System/390x (64ビットzSeries)のポート。Herculesに移植することから始められるのでないか?
    • NetBSD/evbnios2 -- Altera Nios 2 CPUを搭載した評価ボードのポート。qemu-system-nios2に移植することから始められるのではないか。
    • Apple APFSをサポートする。--- APFSなディスクを読み書きしたい。
    • L4NetBSDを実現する。 --- L4LinuxのNetBSD版。
    • JFFS2ファイルシステムをサポートする。
    • Wi-Fi Directを使えるようにする。 --- 最終的にがMiracastを使って画面を送受できるようにしたい。
    • 複数のwsdisplay(4)をサポートする。 --- udl(4)をNetBSD/amd64なラップトップに接続して両方でwscons(4)コンソールを使いたい。
    • USB Attached SCSIなUSB mass storage deviceをサポートする。 --- qemuにUASなmass storageがあるので実物は不要。
    • ipheth(4)をFreeBSDから移植し、iPhoneでテザリングできるようにする。--- iPhone/iPadでUSBテザリングしたい。
    • Thunderboltのホットプラグをサポートする。 --- PCIのホットプラグということなのか?
    • vnd(4)でqcow2の読み書きをサポートする。 --- qemuのqcow2形式のディスクイメージを読み書きしたい。
    • NFSv4をサポートする。 --- NFSv4以降を読み書きできるようにして欲しいし、NFSv4サーバーにもなって欲しい。そうすることで、WindwosからもNFSマウントできるようになるはず。
    • Toshiba/dynabookに内蔵されているACPI Bluetooth host controllerをサポートする。 --- USB接続ではないBluetooth host controller。FreeBSDはサポートしているように見える。
    • Hyper-Vのvideo driverのDRM/KMSをサポートする。 --- Hyper-V環境をデスクトップ環境として使うために。
    • Oracle Cloudでvioscsiなディスクが認識されないのを直す。 --- Free tierのあるOracle Cloudでvioscsi(4)接続なディスクが見えない。
    • ZFSをroot file systemにできるようにする。 --- mfsを使うことなくZFSをroot file systemにできるようにしたい。
    • pms(4)のSynapticsサポートでPanasonic Let’s NoteのTouchPadが上手く動かないのを解消させる。
    • SMB2をサポートする。 --- SMB1をmountする機能は削除されてしまった。
    • センサー用のフレームワークを用意する。 --- ラップトップやWindwosタブレットにもセンサーは搭載されているので、それをサポートするフレームワークが欲しい。

    HP Spectre x360 13-inch ae019TUの思い出

    HP Spectre 260 13-inch ae019TUというラップトップをここ2年強使っていた。 しかし、このラップトップはいろいろとNetBSDl/amd64を使うには不便であった。 極めつけは、8から10カ月ごとにバッテリーが膨らんでしまうということである。 おそらく、HPの設計ではCPU負荷100%で、pkgsrcのビルドをし続けるのを想定してはいなかったのであろう。

    ACPIとUSB Type-Cなxhci、ubt(4)にあった問題はついに直すことはできなかった。 特にACPIはバッテリーのステータスを取得できないし、電源ボタンを押したことやlidを閉じたことを認識しないし、 xhciでUSB Type-Cを使うことはNetBSDの標準の設定ではできなかった。 ubt(4)は、firmwareのロードが必要なモデルで、FreeBSDはサポートしているようだったら、移植するまで進められなかった。

    次は、このHP Spectre x360 13-inch ae019TUを買う時に迷っていたDell XPS 13の最新モデルである9300を使うことにした。 次のマシンでは、i915drmkms(4)は動かなそうなので、genfb(4)とxf86-video-wsfbを使うしかないようだ。 xhciやACPIがちゃんと動いてくれれば良いと願っている。

    TouchPadはおそらくi2c接続のMicrosoft Precision TouchPad準拠のデバイスのようであり、OpenBSDのimt(4)のようなことを しないといけないように思う。 Wi-FiもKIller Wi-Fi AX1650というもので、OpenBSDのiwx(4)でサポートされていないようだ。 Bluetooth (ubt(4))は、HP Spectre x360 13-inch ae019TUと同じ、firmwareのロードの必要なものではないかと想定しているので、 次こそ使えるようにしたい。

    Dell XPS 13 (9300)が無事に使えるマシンであることを祈っている。

    Dell XPS 13 9300でNetBSD/amd64を使う

    仕様については、以下に記載されている。 https://www.dell.com/support/manuals/jp/ja/jpdhs1/xps-13-9300-laptop/xps-13-9300-setup-and-specifications/specificatio...