ESP32腕時計TTGO T-Watchが届いた


ESP32を搭載した腕時計風のTTGO T-Watchを約49ドルで購入しました。

約2週間で届いたので早速遊んでみました。

資料系

メーカページ(LILYGO)
公式英語マニュアル
公式中国語マニュアル
サンプルソフトウェア

開梱

かわいらしい感じの梱包ですね。

内容物はこちら

T-Watch本体と、予備のボード?、T-Watchの横にあるコネクタから拡張するためのケーブル、Type-Cケーブル、腕時計用バンド、裏蓋取り外し用ネジ回しと予備のネジ

説明書には中を開けた時にどういう感じになっているのか書かれています。

とりあえずこちらも開けてみました。

元に戻して電源ON

最初はタッチパネルの検査プログラムが起動しタッチした座標を報告します、Type-Cコネクタの隣のボタンを押すと、今度は衝撃検知プログラムが起動しstepCountとして振り回した回数を表示します。

とりあえず、パソコンにつなげるとドライバがあれば「Silicon Labs CP210x USB to UART Bridge (COM?)」として認識します。

ドライバがインストールされていない場合は下記の様に「CP2104 USB to UART Bridge Controller」として認識されます。ドライバのインストールについては後述します。

デモ用のプログラムがgithubで公開されていますのでArduio IDEをセットアップします。

ただし、普通にインストールしただけでは認識せず、追加手順が必要となります。

必要なもの

Arduino IDE
git for Windows

T-watch ソフトウェア書き込み手順

TTGO公式の設定手順を参照しながらやりました。

その1:git for Windowsをインストール

以前に別の件でインストールしていたのでそのまま使っています。

その2:Arduino IDEをインストール

今回はArduino IDE ver 1.8.9をインストールしました。

その3: Arduino IDEのインストール先のhardwareディレクトリ内にespressifディレクトリを作る

標準インストールだとC:\Program Files (x86)\Arduino\hardware ディレクトリ内にespressifディレクトリを作る。

その4:作成したespressifディレクトリ内でコマンドプロンプトを開く

作成したC:\Program Files (x86)\Arduino\hardware\espressifディレクトリででコマンドプロンプトを開きます。

その5:gitでespressifのarduino-esp32レポジトリを取得する

espressifディレクトリで「git clone –recursive https://github.com/espressif/arduino-esp32.git esp32」(wordpress編集画面だと「-」が2個なのに1個だけになる・・・)を実行します。

そうすると、 C:\Program Files (x86)\Arduino\hardware\espressif\esp32 ディレクトリが作成されファイルが置かれていきます。

その6:esp32\toolsディレクトリにあるgetコマンドを実行し追加ファイルを取得

C:\Program Files (x86)\Arduino\hardware\espressif\esp32\tools\ ディレクトリ内にある「get.exe」を実行し、追加ファイルを取得します。

その7:Silicon Labs CP210xをインストール/アップデート

手順には明記されていないのですが、古いドライバ Ver6.7.4.261で書き込もうとするとエラーになりました。「T-WatchマニュアルのGetting started」に掲載されているCP2104-Win10(Ver10.1.8.2466)だと正常に動きますので、アップデートします。
(CP2104の製造メーカ公式ドライバダウンロードページ)

なお、書き込み時のエラーは下記の「A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header」です。

その8:T-Watchをパソコンに接続

その9:Arduino IDEを起動し、TTGO T-Watchを選択

Arduino IDEを起動し、「ツール」-「ボード」の一覧から「TTGO T-Watch」を選択します。

その10:T-Watchサンプルソフトを取得

git for Windowsを使って、 https://github.com/Xinyuan-LilyGO/TTGO-T-Watch で公開されているサンプルソフトウェアを取得します。

「git clone –recursive https://github.com/Xinyuan-LilyGO/TTGO-T-Watch」

取得完了後、「library」にあるディレクトリを、マイドキュメントの中にある「Arduino\library」内にコピーします。

その11:書き込み

Arduino IDEからサンプルソフトウェアを書き込みます。


サンプルソフトウェアを書き込んだのですが、うまいこと自宅のWiFiに接続できず、時計合わせに失敗しています。

また、タッチパネルの動作が若干微妙な感じもあります・・・

ESXi上でCentOS7なのにCentOS6だと言われる件


ESXi上でCentOS7をインストールした場合、open-vm-toolsをインストールされていても「CentOS6」だと言われてしまう件について調査した。

なお、何故かvCenter上から見た場合は警告されず、直接ESXi上で仮想マシンを見た際にだけ言われる。

結論めいたこと

open-vm-toolsのバグ(Fix CentOS 7.6 detection)で、open-vm-tools 10.3.10以降で修正されている。

しかし、2019/06/27時点でのCentOS7のopen-vm-toolsは10.2.5であり修正されていないバージョンであるため公式な手法では対処できない。

回避策としては2つある

/etc/centos-release を修正する

今回のバグは「CentOS Linux release 7.6.1810 (Core)」の文字列からOSバージョン判定をする際に「”6.”があればCentOS6」「”7.”があればCentOS7」「”8.”があればCentOS8」という順番で行っているせいで、「7.6.1810」の中にある「6.」を読み取ってしまい「CentOS6」と判定されていることにより発生している。

このため、/etc/centos-release 内の誤判定要素を無くすことで対処できなくもない。

例えば「 CentOS Linux release 7.6 1810 (Core) 」と、「.」を抜いてしまうとか。

ただ、このファイルは他のソフトウェアでもディストリビューション判別に使用されており、そこでの条件の書き方によっては正しく判定できなくなってしまう恐れもあるため、注意が必要である。

vSphere仮想マシンオプションのゲストOSを修正する

vSphere6.5以降(仮想マシンバージョン13以降)でCentOS7を使用する場合、仮想マシンオプションで「ゲストOS:Linux」と「ゲストOSのバージョン:CentOS 7(64ビット)」を設定する。

誤判定で「CentOS 6(64ビット)」と認識されているんだったら、仮想マシンオプションの「ゲストOSのバージョン」も「CentOS 6 (64ビット)」にしちゃえばいいじゃん。

という非常に雑な対応手法。

なんでこんなことに

githubにあるopen-vm-toolsのソースコードからopen-vm-tools/open-vm-tools/lib/misc/hostinfoPosix.c を見てみるとひたすら条件が列挙されている。

いままではバージョン表記の中に「.」が2個登場するという想定が無かったようで、Debianでも同様の手法で判定しています。

今回のCentOSでの対応は、いままで「6.」をキーにしていたものを「 6.」と数字の前にスペースが入っていることを検出するようにした、というものになっている。

個人的に結構意外だったのはRedHat Enterprise LinuxとCentOSの判定ルーチンが独立しているという点。

   if (strstr(distroLower, "red hat")) {
      if (strstr(distroLower, "enterprise")) {

         /*
          * Looking for "release x" here instead of "x" as there could be
          * build version which can be misleading. For example Red Hat
          * Enterprise Linux ES release 4 (Nahant Update 3)
          */

         int release = 0;
         char *releaseStart = strstr(distroLower, "release");

         if (releaseStart != NULL) {
            sscanf(releaseStart, "release %d", &release);
            if (release > 0) {
               snprintf(distroShort, distroShortSize, STR_OS_RED_HAT_EN"%d",
                        release);
            }
         }

         if (release <= 0) {
            Str_Strcpy(distroShort, STR_OS_RED_HAT_EN, distroShortSize);
         }

      } else {
         Str_Strcpy(distroShort, STR_OS_RED_HAT, distroShortSize);
      }
   }
   } else if (StrUtil_StartsWith(distroLower, "centos")) {
      if (strstr(distroLower, " 6.")) {
         Str_Strcpy(distroShort, STR_OS_CENTOS6, distroShortSize);
      } else if (strstr(distroLower, " 7.")) {
         Str_Strcpy(distroShort, STR_OS_CENTOS7, distroShortSize);
      } else if (strstr(distroLower, " 8.")) {
         Str_Strcpy(distroShort, STR_OS_CENTOS8, distroShortSize);
      } else {
         Str_Strcpy(distroShort, STR_OS_CENTOS, distroShortSize);
      }
   } 

そして、Oracle LinuxはCentOSと同様の記載になっているという点。

   } else if (StrUtil_StartsWith(distroLower, "enterprise linux") ||
              StrUtil_StartsWith(distroLower, "oracle")) {
      /*
       * [root@localhost ~]# lsb_release -sd
       * "Enterprise Linux Enterprise Linux Server release 5.4 (Carthage)"
       *
       * Not sure why they didn't brand their releases as "Oracle Enterprise
       * Linux". Oh well. It's fixed in 6.0, though.
       */
      if (strstr(distroLower, "6.")) {
         Str_Strcpy(distroShort, STR_OS_ORACLE6, distroShortSize);
      } else if (strstr(distroLower, "7.")) {
         Str_Strcpy(distroShort, STR_OS_ORACLE7, distroShortSize);
      } else if (strstr(distroLower, "8.")) {
         Str_Strcpy(distroShort, STR_OS_ORACLE8, distroShortSize);
      } else {
         Str_Strcpy(distroShort, STR_OS_ORACLE, distroShortSize);
      }
   }

Oracle Linux 7の /etc/oracle-release の表記はどういう風になってるんだろうかな・・・

Steam版Blenderをインストールしたけど拡張子.blendの関連付けが行われない


Steam版Blender」が無料になっていたので入手してインストールした。

従来のBlenderもインストールしていたので、アプリケーション一覧だと以下のような感じになっていた。(上がSteam版)

デスクトップ上のアイコンだと下側の「Blender」がSteam版。

Blenderアプリのバージョンアップを自動で行いたいからSteam版Blenderをインストールしたので、従来版Blenderのアンインストールをしたところ問題が発生。

拡張子.blendの関連付けがなくなってしまった。Steam版Blenderもアンインストールし、Steam版Blenderだけを再インストールしてみても関連付けを行ってくれない。

検索したところ「.blend file association」にて対処方法を発見。

1. Library -> Software
2. Right Click “Blender” -> Properties -> Set Launch Options
3. Add “-R” without quotes
4. Hit OK
5. Launch Blender
6. You should see a command prompt window and a message saying “File extension registered for the current user. To register for all users, run as an administrator.”
7. Hit OK
8. Right Click “Blender” -> Properties -> Set Launch Options
9. Remove “-R”
10. Double click any .blend file and it should open with the Steam Blender version

Steamアプリの中からSteam版Blenderを起動する際、1回だけ「-R」オプションをつけて起動することで関連付け処理が行われる、とのこと。

これを実行してみたら問題なく動作するようになった。

ラズパイ4がUS,EU圏以外でも発売できる理由って何なんだろう?


ラズベリーパイ4が発売になりました。

基板上にFCC ID(US)とCEロゴ(EU圏)が印字されているので、たぶんこの2箇所で使うのは合法なんだろうなぁ、って感じです。

で・・・いま手元にあるラズパイ3の箱を見てみると各国の電波系の認証IDとロゴがあります。

CE

CEマークで、EU圏で使う場合に必要です。

FCC

FCCマークで、アメリカで使う場合に必要です。

FCC IDが発行されます。文字列を指定できるようで、製品名称が入ったりします。

CMIT ID 中国のCCC認証を取得すると発行されるIDです。SRRCの場合もあるようです。

KCC

韓国のKCCマークです。

MSIP-CMN-P2R-RPI32がラズパイ3のIDのようです。

NCC

台湾のNCCマークです。

通称技適マークです。 工事設計認証のマーク。TELECとも呼ばれることがあります。

香港で使用するための認証です。

上記の認証を発行している組織「通訊事務管理局」のロゴです。

というわけで、私が所有しているラズパイ3を合法的に利用できるのは、日本、アメリカ、EU圏、韓国、中国、香港、台湾であるようです。

それ以外の国については認可がおりてないため取り締まられる可能性がある、ということになります。

いままでの機器における認可の取得状況を見る限り、ラズパイ4についても、同じようにアメリカとEU圏以外についてはちゃんと認証を取得しなければ不味いはずなのですが、現時点ではそれ以外の国についてちゃんと認証取得が完了しているかどうかは不明です。

いったいどのようになっているのでしょうかねぇ・・・


株機器会社イー・オータマの「各国申請代行」のページに各国の認証ロゴがあり、調べる手がかりになりました。

総務省の平成24年の記事「 各国の基準認証制度の概要 -MRA情報の調査に親しむ- 」というpdfファイルは韓国、カナダ、中国、オーストラリア、EU圏、シンガポール、アメリカにおける電波認証に係わる組織と規制についての説明が簡単にされており、大変役にたちました。

また平成22年発行の「各国基準認証制度の概要」ではインド、中国、韓国、カナダ、ペルー、ロシアで(データ通信も行う)無線機器を販売する際に必要となる認証について解説されています。

vSphere上にRHEL8を日本語でインストールしようとするとインストーラがちゃんと表示されない


vSphere 6.0環境でRHEL8をインストールしようと、日本語インタフェースで進めようとしたら、「インストール概要」の画面以降、仮想コンソールからはみ出た範囲まで使われるようになってしまう。

対処方法を捜索・・・vSphere側の「svga.height」「svga.width」指定ではうまくいかなかったので、Anaconda側のパラメータを「Anaconda Boot Options一覧」から探したところ「inst.resolution」を発見。

起動時のカーネルオプションに対して「inst.resolution=1024×768」を追加することで、下記の様に全てを表示させることに成功した。