Echo show 5を買ったらAmazonの配送予定がダダ漏れになった


プライムセールでAmazon Echo show 5が安かったので買ってみた。

0時過ぎに発注したら11時過ぎに到着。

セットアップを開始してみてびっくり。

WiFiの設定してないのに接続してシステムアップデートの取得が始まった。

家にはEcho dotがあり、それ用の設定がAmazon側に保存されており、Echo show 5の出荷時にWiFi設定までが組み込まれていたようです。

びっくりです。

で・・・起動して、めんくらったのはこの表示

これ、Echo show 5の出荷についての通知なのですが、確認したけどその消し方が分からないという・・・

そして、そもそもこれが表示されてしまうと、Amazonで買ったことが筒抜けになってしまう・・・

設定を探したところ「 通知:スキルなどのAlexaサービスからのアラート 」をオフにすることでようやく消えました。

が・・・これをオフにしてしまうと、全てのスキルからのお知らせが表示されなくなるため、とても寂しい画面が・・・

これが延々と繰り返しになっています。

もうちょっとカスタマイズできるようにならないかなぁ・・・

……

AndroidのAlexaアプリの 「設定」-「通知」-「Amazonでお買い物」 で配送に関する通知をオフにすることができました。

eSIM対応デバイスのメモ 2019/07/18版


IIJがeSIM対応を始めた。(国内初、IIJmioでeSIM対応のデータ通信サービスを開始)

現時点でeSIM対応デバイスというのは何があるのかを調べて見た。

後述するページにかいてあったものをまとめると、以下のような感じだ。

Apple

AppleのサポートページにあるeSIMに関する記述:「eSIM でデュアル SIM を活用する

Apple iPhone XS (香港,マカオモデルも含む,中国モデルは無い?)
Apple iPhone XS Max (香港,マカオ,中国モデルは物理的なデュアルSIM)
Apple iPhone XR (香港,マカオ,中国モデルは物理的なデュアルSIM)
Apple 11インチ iPad Pro
Apple 12.9インチ iPad Pro (第3世代)
Apple Air (第3世代)
Apple iPad mini (第5世代)

Apple Watchについては標準のeSIM対応手順ではないようで、ちょっと厳しいようだ

Apple Watch Series 3 (GPS+Cellularモデル)
Apple Watch Series 4 (GPS+Cellularモデル)

Android

Google Pixel 2/3/3XLの日本向け端末ではeSIMのかわりにFelicaモジュールが導入されているため使用できない。一部にオーストラリア版もeSIMがない、という記述があったが、どうやらSIMロックがかかっているPixelがいくつかの携帯電話会社から販売されているようで、それだとeSIMが使えないらしい。
Pixel Phone Helpフォーラム「Pixel 3/3XL eSIM support in Australia」でOptusで買ったデバイスだとeSIMインタフェースが無いという事象の報告と、unlockしたやつだと表示されるという報告。
Pixel Phone Help「Get a SIM card & insert it into a Pixel phone」には「 if the phone was purchased in Japan  or if bought with Verizon or Charter service 」という注意書きだった)

Google Pixel 2 (日本以外)
Google Pixel 3 (日本以外)
Google Pixel 3XL (日本以外)
Google Pixel 3a (日本以外)
Google Pixel 3a XL (日本以外)

Planet Gemini PDA (4Gモデル)
Planet Comso Communicator (4Gモデル)

パソコン系

Windows10でのeSIM設定について「eSIM を使って Windows 10 PC で携帯データ ネットワーク接続を利用する

Microsoft Surface Pro LTE Advanced
Lenovo Yoga 630 (snapdragon850搭載Windows)
HP Spectre Folio 13 (日本ではeSIMモデル未販売)
ASUS TransBook Mini T103HAF-LTE,T103HAF-GR079LTE(ただしIIJのeSIMではトラブル発生中)

Android Wear系(時計)

Huawei Watch 2 Pro (2018モデル)
Samsung Gear S2 classic(3G電波のみ対応)
Samsung Gear S3
Samsung Galaxy Watch


参照情報一覧

・Apple 「eSIM でデュアル SIM を活用する」と「2 枚の nano-SIM カードでデュアル SIM を使う

iPhone XS、iPhone XS Max、iPhone XR は、nano-SIM と eSIM を使ったデュアル SIM に対応しています。(1)

eSIM はデジタル SIM なので、物理的な nano-SIM を使うことなく、通信事業者 (キャリア) のモバイル通信プランをアクティベートすることができます。

(1)iPhone の eSIM は、中国大陸では提供予定がありません。香港およびマカオでは、iPhone XS だけが eSIM を搭載しています。中国大陸、香港、マカオでの 2 枚の nano-SIM を使ったデュアル SIM については、こちらの記事を参照してください。

eSIM でデュアル SIM を活用する

中国大陸以外にいる場合や、香港やマカオで iPhone XS をお使いの場合は、eSIM でデュアル SIM を活用する方法をこちらの記事でご確認ください。

2 枚の nano-SIM カードでデュアル SIM を使う

IIJmio eSIMプラン

動作確認済端末(2019年7月4日現在)
Microsoft Surface Pro LTE Advanced
Apple iPhone XS、iPhone XS Max、iPhone XR
Apple 11インチiPad Pro、12.9インチiPad Pro(第3世代)、iPad Air(第3世代), iPad mini(第5世代)
(※)Apple Watch Series 3/Series 4 (GPS + Cellularモデル)では動作しません。

Ubigi eSIMの互換性ガイド

1. List of compatible eSIM devices: 
Smartphones with embedded eSIM*:iphone XS,
iPhone XS Max,
iPhone XR,
Google Pixel 3
*if your phone is locked to your carrier, you will not be able to install Ubigi on its eSIM.
Windows 10 PCs:Lenovo Yoga 630,
HP Spectre Folio
Tablets with embedded eSIM:iPad Air (3rd Generation)
iPad Pro (3rd Generation)
iPad Mini (5th Generation)
Gemini PDA

FLEXIROAM eSIM

Currently supported devices: iPhone XS, XS Max, XR, Pixel 3, Pixel 3 XL
*Not supported by iPhone XR and XS Max purchased in Hong Kong, Macau and Mainland China
*Not supported by Pixel devices purchased in Australia
Same day activation, no contract required!

・CANSTAR BLUEの「What is an eSIM? Providers & Features Explained」

ここはいろんな紹介ページだけど、機種がまとまっている。

Watches with eSIM Compatibility
Huawei Watch 2 Pro
Apple Watch Series 3
Apple Watch Series 4
Samsung Gear S2
Samsung Gear S3
Samsung Galaxy Watch
Selected phones with eSIM Compatibility
Google Pixel 2
Google Pixel 3
Samsung Galaxy Note 9
Samsung Galaxy S9, S9+
iPhone XS
iPhone XS Max

・hp「HPビジネス向けノートブックとモバイルワークステーションPC – eSIM対応のWWANモジュールを搭載したコンピューターでは、SIMが装備されていると、スマートカード認証に失敗する場合がある

hpの場合、内部拡張カードのWWANモジュール上にeSIM対応モジュールを採用しているので、カードの採用具合によってeSIM対応していたりするようだ。

eSIM対応のWWANモジュールは次の機器に装備されています:
インテルXMM 7360 LTE-Advanced
インテルXMM 7560 LTE-Advanced Pro
インテルXMM 7262 LTE-Advanced
HP LT4132 LTE/HSPA+ 4Gモバイルブロードバンドモジュール
Snapdragon X12 LTE-Advanced

次のWWANモジュールは、当初eSIM機能なしで出荷されましたが、eSIM機能はファームウェアの更新で有効にできます:
インテルXMM 7360 LTE-Advanced: SoftPaq sp91807でeSIM機能を有効にできます
HP LT4132 LTE/HSPA+ 4Gモバイルブロードバンドモジュール:SoftPaq sp84042でeSIM機能を有効にできます

eSIM対応のWWANモジュールを搭載できるコンピューター:
HP Elite x2 1012 G2
HP Elite x2 1013 G3
HP EliteBook 1040 G4ノートブックPC
HP EliteBook 725 G4ノートブックPC
HP EliteBook 735 G5ノートブックPC
HP EliteBook 745 G4ノートブックPC
HP EliteBook 745 G5ノートブックPC
HP EliteBook 755 G4ノートブックPC
HP EliteBook 755 G5ノートブックPC
HP EliteBook 820 G4ノートブックPC
HP EliteBook 828 G4ノートブックPC
HP EliteBook 830 G5ノートブックPC
HP EliteBook 836 G5ノートブックPC
HP EliteBook 840 G4ノートブックPC
HP EliteBook 840 G5 Healthcare EditionノートブックPC
HP EliteBook 840 G5ノートブックPC
HP EliteBook 840r G4ノートブックPC
HP EliteBook 846 G5ノートブックPC
HP EliteBook 848 G4ノートブックPC
HP EliteBook 850 G4ノートブックPC
HP EliteBook 850 G5ノートブックPC
HP EliteBook x360 1030 G2ノートブックPC
HP EliteBook x360 1030 G3ノートブックPC
HP EliteBook x360 1040 G5ノートブックPC
HP EliteBook x360 830 G5ノートブックPC
HP EliteBook x360 830 G6ノートブックPC
HP ProBook 430 G4ノートブックPC
HP ProBook 440 G4ノートブックPC
HP ProBook 450 G4ノートブックPC
HP ProBook 640 G3ノートブックPC
HP ProBook 640 G4ノートブックPC
HP ProBook 645 G3ノートブックPC
HP ProBook 645 G4ノートブックPC
HP ProBook 650 G3ノートブックPC
HP ProBook 650 G4ノートブックPC
HP ProBook 655 G3ノートブックPC
HP ProBook x360 440 G1ノートブックPC
HP ZBook 14u G4 Mobile Workstation
HP ZBook 14u G5 Mobile Workstation
HP ZBook 15 G4 Mobile Workstation
HP ZBook 15 G5 Mobile Workstation
HP ZBook 15u G4 Mobile Workstation
HP ZBook 15u G5 Mobile Workstation
HP ZBook 17 G5 Mobile Workstation
HP ZBook Studio G5 Mobile Workstation

・gemalto「eSIM搭載コンシューマIoTデバイスをアクティベートする3つの方法

SIMメーカの1つジェムアルトに掲載されているeSIMデバイスにどうやって契約情報を紐つけるか、という手法には3種類あります、といった解説。

今回、IIJmioで提供が始まったのは契約固有のQRコードを読みとる「QRコードによるアクティベーション」となる。

スマホ/パソコン上のアプリからオンライン契約処理をして使える様にする、というのは「GSMAのルートディスカバリーサービスによるeSIMアクティベーション」となる。

どちらの手法もeSIM搭載端末がWiFiなどの別の手法で契約管理を行うサーバにアクセスできる必要があります。

・IIJてくろぐ「IIJmio モバイルサービス eSIMプラン (ベータ版) に関する諸情報

ASUS TransBook Mini T103HAF-LTE, T103HAF-GR079LTEのeSIMで読み込みを行うと本体修理が必要になる、という記述。

ユーザバックエンドがSQLのiredmailのSOGoでユーザがログインできない


qmail+vpopmailからパスワード暗号化文字列ごと移植したpostfix+dovecotベースの統合環境iredmail環境がある。

iredmailにはExchange互換サーバのSOGoもあるので、そちらでログインしようとしたらエラーになる。

roundcubeからだとログインができるし、dovecotを使うPOP3/IMAPアクセスでも問題無い。

/var/log/sogo/sogo.log へのエラーは下記の様になっていた。

Jul 04 13:15:04 sogod [9257]: SOGoRootPage Login from 'クライアントIPアドレス' for user 'ユーザ名@ドメイン名' might not have worked - password policy: 65535  grace: -1  expire: -1  bound: 0

iredmailのフォーラムに「Can’t configure password policy when using SOGo」といのがあり、sogo.confに「passwordPolicy = YES;」を追加すればいいじゃん?とあったのでやってみたが、変化はなし。

SOGo側のbug tracking system「 0003899: SQL authentication 」にてヒントを発見。

暗号化文字列の指定の問題のようだ。

今回、sogo.confは下記の様に「userPasswordAlgorithm = ssha512」となっており、パスワード暗号化文字列がssha512フォーマットである、ということになっている。

    SOGoUserSources = (
        {
            type = sql;
            id = users;
            viewURL = "mysql://sogo:~@127.0.0.1:3306/sogo/users";
            canAuthenticate = YES;

            // The algorithm used for password encryption when changing
            // passwords without Password Policies enabled.
            // Possible values are: plain, crypt, md5-crypt, ssha, ssha512.
            userPasswordAlgorithm = ssha512;
            prependPasswordScheme = YES;

            // Use `vmail.mailbox` as per-domain address book.
            isAddressBook = YES;
            displayName = "Domain Address Book";
            SOGoEnableDomainBasedUID = YES;
            DomainFieldName = "domain";
        },

しかし、今回、vpopmail時代の文字列「$1$5ulpxxxx$VS0xHxxKxMPBSIPQlXDXC/」という書式、つまりはmd5-cryptフォーマットを流用しているので認証できなかった、ということになる。

メインとなるiredmail側は新しくパスワードを設定した場合はssha512、移植したものはmd5-cryptという運用にしている。

ただ、postfix,dovecot,roundcubeの運用に関しては、ssha512でもmd5-cryptでも問題無くログインできている。

それに対してSOGo側は「SOGO Installation and Configuration Guide」を見ると userPasswordAlgorithm には1つの値しか指定はできないようだ。

セキュリティを考えると全体をmd5-cryptに下げる、という選択肢はとれないので、SOGoを使いたい場合は、パスワードを再設定する、ということになる。

パスワードを再設定すると以下のログとなる。

Jul 04 13:50:43 sogod [1094]: SOGoRootPage successful login from 'クライアントIPアドレス' for user 'ユーザ名@ドメイン名' - expire = -1  grace = -1

Arduino/ESP32/TTGO T-WatchのシステムクロックとRTC周りのメモ 2019/07/02


TTGO T-watchの腕時計の時刻表示がおかしいので調べていったことのメモ

・T-Watchでは画面オフ時にシステムクロックが止まる

T-watchでは左側の端っこボタンを押すと画面がオフになる。

この処理は、power_handle関数内の「LVGL_POWER_IRQ」イベントの「axp.isPEKShortPressIRQ()」( 左側の端っこボタン =PEKキー)で行われている。

オフ時に「rtc_clk_cpu_freq_set(RTC_CPU_FREQ_2M)」を実行して、CPU周波数を落としている(240M→2M)

これによりOS内のシステムクロックの進みも劇的に遅くなって、ほぼ止まっているように見える。

このことがあるので、T-Watchのソフトウェアでは、システムクロックからではなく、RTC上の時計から時刻を取得しているようだった。

・システムクロックの設定方法はsettimeofday(UNIX)

Arduino/ESP32環境でシステムクロックを簡単に設定する手法はNTPからの時刻を取得して、システムクロックを適用する、というもの。

    struct tm timeinfo;
    bool ret = false;
    int retry = 0;
    configTzTime("JST-9", "pool.ntp.org");
    do {
        ret = getLocalTime(&timeinfo);
        if (!ret) {
            Serial.printf("get ntp fail,retry : %d \n", retry++);
        }
    } while (!ret &amp;&amp; retry < 3);

また、システムクロックをRTCに反映するのも簡単。(以下は、RTCモジュールがPCF8563の場合に使うPCF8563_Libraryの場合)

        rtc.setDateTime(timeinfo.tm_year, timeinfo.tm_mon + 1, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);

しかし、逆にRTCからシステムクロックに対して時刻を反映させる手法がよく分からない。

RTCモジュールがDS1307RTCの場合の事例があるので Michael MargolisさんによるTimeモジュールを使ってみたが、時刻設定はできなかった。

void syncSystemTimeByRtc()
{
    Serial.print("Read RTC :");
    Serial.println(rtc.formatDateTime(PCF_TIMEFORMAT_YYYY_MM_DD_H_M_S));
    struct tm dt;
    getLocalTime(&amp;dt);
    Serial.printf("getLocalTime is %d:%d:%d\n",dt.tm_hour,dt.tm_min,dt.tm_sec);
    RTC_Date d = rtc.getDateTime();
    Serial.printf("  %d,%d,%d,%d,%d,%d\n",d.hour,d.minute,d.second,d.day,d.month,d.year);
    setTime(d.hour,d.minute,d.second,d.day,d.month,d.year);
    Serial.println(timeStatus());
    getLocalTime(&amp;dt);
    Serial.printf("getLocalTime override RTC clock, %d:%d:%d\n",dt.tm_hour,dt.tm_min,dt.tm_sec);
   
}

上記のデバグコードをいれて、画面オフ→オンイベントを起こしてみると、

10:16:18.034 -> LVGL_POWER_IRQ event
10:16:18.034 -> 
10:16:18.034 -> PEKShortPressIRQ to off
10:31:15.803 -> PEKShortPressIRQ to on
10:31:15.803 -> bma423_disable:0
10:31:15.803 -> Read RTC :2019-7-2/10:31:15
10:31:15.835 -> getLocalTime is 10:16:9
10:31:15.835 ->   10,31,15,2,7,2019
10:31:15.835 -> 2
10:31:15.835 -> getLocalTime override RTC clock, 10:16:9
10:31:24.715 -> RTC time is 2019-7-2/10:31:24
10:31:24.715 -> getLocalTime is 10:16:17

時刻が設定されていない・・・

UNIXだとどうやってシステムクロック設定できたかな?と調べて見たらsettimeofdayでunixtimeを指定する、ということが判明

#include <time.h>    // requried for settimeofday 
#include <sys/time.h>// requried for timeval

上記を冒頭に追加した上で、以下を書いた。

void syncSystemTimeByRtc()
{
    Serial.print("Read RTC :");
    Serial.println(rtc.formatDateTime(PCF_TIMEFORMAT_YYYY_MM_DD_H_M_S));
    struct tm dt;
    getLocalTime(&amp;dt);
    Serial.printf("getLocalTime is %d:%d:%d\n",dt.tm_hour,dt.tm_min,dt.tm_sec);
    RTC_Date d = rtc.getDateTime();
    Serial.printf("  %d,%d,%d,%d,%d,%d\n",d.hour,d.minute,d.second,d.day,d.month,d.year);
    dt.tm_hour = d.hour;
    dt.tm_min  = d.minute;
    dt.tm_sec  = d.second;
    dt.tm_mday  = d.day;
    dt.tm_mon = d.month-1;
    dt.tm_year = d.year-1900; 
    time_t timertc = mktime(&amp;dt);
    Serial.print("RTC unixtime is ");
    Serial.print(timertc);
    Serial.print(" ,system unixtime is ");
    time_t timesys = time(NULL);
    Serial.println(timesys);
    struct timeval tv ={
      .tv_sec = timertc
    };
    settimeofday(&amp;tv,NULL);
    
    getLocalTime(&amp;dt);
    Serial.printf("getLocalTime override RTC clock, %d:%d:%d\n",dt.tm_hour,dt.tm_min,dt.tm_sec);
   
}

これで期待通りにRTCの時刻をシステムクロックに反映することができるようになった。

13:23:48.103 -> PEKShortPressIRQ to on
13:23:48.103 -> bma423_disable:0
13:23:48.103 -> Read RTC :2019-7-2/13:23:47
13:23:48.103 -> getLocalTime is 13:17:30
13:23:48.103 ->   13,23,47,2,7,2019
13:23:48.103 -> RTC unixtime is 1562041427 ,system unixtime is 1562041050
13:23:48.103 -> getLocalTime override RTC clock, 13:23:47
13:23:57.121 -> RTC time is 2019-7-2/13:23:56
13:23:57.121 -> getLocalTime is 13:23:56

・rtc_cpu_freq_setは非推奨

コンパイル中に以下の警告が・・・

C:\Users\osakanataro\Documents\Arduino\TTGO-T-Watch-mod\TTGO-T-Watch-mod.ino:328:17: warning: 'void rtc_clk_cpu_freq_set(rtc_cpu_freq_t)' is deprecated [-Wdeprecated-declarations]

                 rtc_clk_cpu_freq_set(RTC_CPU_FREQ_240M);

https://github.com/espressif/arduino-esp32/blob/master/tools/sdk/include/soc/soc/rtc.h 」を確認したところ、「 rtc_clk_cpu_freq_config_set 」に置き換わった、とある。

・・・あるんだけど、 rtc_clk_cpu_freq_config_set に関する資料がでてこないってどういうこと???

grepしても定義無いし、試しに置き換えてみても定義されてない、というエラーになった。

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に接続できず、時計合わせに失敗しています。

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