2020/10/16

Motorola G7 Power をAndroid10にアップデートした

 2020年4月のセキュリティアップデートが6月に配信されてからG7 Powerにはアップデートが来る様子がない…

海外フォーラムの情報を見てみるとG7 PowerにはAndroid10の配信も既に始まっているみたい

OSアップデートはまぁしょうがないとしてもMotorola G7 PowerはAndroid Enterprise Recomendedに登録されてるんだからセキュリティパッチはちゃんと配信してほしい 

Android Enterpise Recomendedって90日以内にセキュリティパッチが配信されるはずじゃなかったの???

Webを検索してみるとどうもLenovoが配布しているツールを使うと最新のイメージを手動で取得して適用できるらしいことがわかった

いつまで経ってもアップデートがやって来なそうだし、セキュリティパッチがいいかげん古すぎて怖いので思い切って手動アップデートしてみることにした

Rescue And Smart AssistantをレノボサイトからダウンロードしてWindowsにインストールする

インストーラーを起動してインストールすると初回起動時にLenovo IDでログインしろ、と言われる…

しょうがないのでアカウントを作ってログインするとやっとRescue And Smart Assistant Toolが起動する

G7 PowerをPCに接続してUSBデバックモードを有効にする(あらかじめ開発者モードを解放しておくことが必要)

Rescue And Smart Assistant Toolの上部ツールバーの左から2番目のアイコンをクリックすると、接続しているG7 Powerの情報が表示されて右下の方にどうやら取得可能な最新のROMイメージが表示される

QPOS30.52-29-5というのがどうも最新のROMイメージっぽい、海外のサイトだともう少し新しそうなROMイメージがあるっぽいが地域によって配布にばらつきあるのかも?

ダウンロードボタンをクリックするとダウンロードが始まってダウンロード後に適用?Resucueだったかな?ボタンをクリックするとG7 Powerがbootloaderの画面で再起動してROMイメージが適用される

G7 Power側では操作することは何もなく、PC側のRescue And Smart Assistant Toolのプログレスバーが最後まで進行すればアップデート完了

プログレスバーが47%辺りでしばらく止まっていたのはちょっと心配になったが何ができるわけでもないのでただじっと待つべし

この方法でアップデートするとOSクリーンインストールと同じ状態なのでG7 Power側は完全に初期化されてしまうのでセットアップを最初からやり直しになる...

Rescue And Smart Assistant Toolの方でバックアップを取る機能があるので場合によっては最初にバックアップを取っておいてからアップデートした方がいいかもしれない

QPOS30.52-29-5にアップデート後はAndroid10になりセキュリティパッチが2020年8月まで適用される

来月からはちゃんとOTAでセキュリティパッチ来てくれないと困るなぁ〜

AndroidはセキュリティパッチがPixelとAndroid One以外はちゃんと配布されるか分からないのが怖いんだよなぁ〜こんなに遅いのはMotorolaだけなのかな?

2019/08/19

SORACOM LTE-M Button for Enterpriseで位置情報を取得してみた

SORACOM LTE-M Button for Enterpriseで位置情報が取得してみた

ボタンを押すとFunk経由でAWS Lambdaを呼び出してみる

以下、Lambdaのコード
From __future__ import print_function 
import boto3
import os
import json
import logging
import dateutil.parser
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET
import urllib.request

logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')
from_address = "送信元のメールアドレス"
to_address = []
to_address.append("送信先メールアドレス")

def lambda_handler(event, context):
    clickType = event["clickTypeName"]
    batteryLevel = event["batteryLevel"]
    lat = context.client_context.custom["location"]["lat"]
    lon = context.client_context.custom["location"]["lon"]
    imsi = context.client_context.custom['imsi']

    apiUrl = 'https://map.yahooapis.jp/geoapi/V1/reverseGeoCoder?lat=' + str(lat) + '&lon=' + str(lon) + '&appid=' + os.environ['yahooMapApi']
    response = urllib.request.Request(apiUrl)
    with urllib.request.urlopen(response) as res:
        data = res.read()
    root = ET.fromstring(data)
    titl = root[1][0][1].text
    
    mapUrl = 'http://maps.google.co.jp/maps?q=' + str(lat) + ',' + str(lon)
    body = "\n" + titl + " にいます\n" + mapUrl

    ts = datetime.now() + timedelta(hours=9)
    ts = ts.strftime('%Y/%m/%d %H:%M:%S')

    if (clickType == 'SINGLE'):
        subject = 'SINGLE'
        body = str(ts) + body
    elif (clickType == 'DOUBLE'):
        subject = 'DOUBLE'
        body = str(ts) + body
    elif (clickType == 'LONG'):
        subject = 'LONG'
        body = str(ts) + body
    else:
        subject = 'failed'
        body = 'failed'

    ses.send_email(Source=from_address,
                   Destination={'ToAddresses': to_address},
                   Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}})

2019/05/12

iPadでSIMの携帯基地局情報を使った位置取得

iPadだとiPhoneと違って設定画面に直接APN情報を入力できるからキャリア以外のSIMを使うときはプロファイル入れるのが面倒なのでAPN情報を設定画面に直接入力しちゃうんだよね

SORACOM AirはAPIやメタデータで接続している携帯基地局の情報を取得できるので試してみたんだけど...
iPadにSORACOMのSIM入れても何故かradioTypeがGSMってなってしまうのです...
国内用SORACOM AirだとradioTypeはLTEとなってないと携帯基地局の情報を取得できないのです

MR04LNにSORACOMのSIM入れたときはradioTypeがLTEになってたんだけど、iPadだと同じAPIをたたいてもradioTypeがGSMとなってしまうので携帯基地局の情報を取れないものだと思い込んでだんだ

ふと素直にSORACOMのプロファイルをiPadにインストールしてみたら、何事もなかったかのようにradioTypeがLTEとなって携帯基地局の情報を取得できました
その代わり?Webコンソールからは何故か携帯基地局からの位置取得ができなくなってしまいました…
なんで?

う~ん、何だか違う気がする...
外出先でモバイルルーターに一回接続したらまたradioTypeがGSMになっちゃった...
モバイルルーターを切断してモバイル通信をオンオフしてもradioTypeがGSMのままだ...
結局再起動させないとradioTypeがLTEとして認識しなかった

そもそもSORACOM AirをiPadに入れていろいろ触ってみるというのが間違ってるか...

GCPで仮想サーバー立ててiPad mini5で接続してみた

GCPでサーバーを立ててみた
Webのコンソールからポチポチポチとクリックして、鍵を入れて作成ボタンをクリックすればサーバー起動です
お手軽な時代なんだなぁ…
iPad mini5からBlinkで接続…接続…
ん?すぐにBlinkのコンソールに戻ってしまいSSHで接続できない…何故?
試しにWindowsからSSHしてみると、あっさり接続できた…
うーん、困った
DebianでもCentOSでも何故かiPad側のBlinkからは接続できないんだ…
しょうがないのでBlinkを再インストールして接続してみたら、あっさり接続できた
バックアップから復元した時になんかおかしくなっちゃったのかなぁ??
GCPはUSリージョンのmicroインスタンスならAlways Freeだからお金ない子には嬉しいです
でもデータの下り転送量は1G以降は課金されるらしいんだよね…
VPNサーバー立ててziproxy入れてモバイル回線のデータ節約しようと思ってたんだけど、下り側の転送量によっては想像より課金されちゃうのかな?
いや、それよりもziproxyってhttpsはダメなんだね
そっかーhttpsのサイトの場合は一度復号化しないといけないのか…
ドコモのギガホにした方が色々考えなくて楽なのかな…

2018/11/12

SORACOM LTE-M Button 買ってみた!!

SORACOM LTE-M Buttonを買って遊んでみました

単純にボタンを押したらメール送信ならほぼスマホアプリのAWS 1-Clickだけで実現できました

ただ最初はボタンの1回押し、2回押し、長押しを認識してくれるか情報がなかったので、ネットで検索してAWS Enterprise IoT Buttonのサンプルコードを参考にてコードを書き加えてみました

ボタンを押した状態は「clickType」で取得できるみたいです

追加でボタンを押した時間を含めたかったんだけど、「reportTime」に入ってる時間は標準時間なので+9時間して使ってます

本当はボタンの残クリック回数を取得したかったのですが、「remainingLife」は残クリック回数か残日数の小さい方を示しているらしいのでif文で分岐することにしました
当分は残日数の方が表示され続けますね...

メールは確認用に2箇所に送信するためにボタンのイベントに入ってる「to_address」ではなく「clickType」の分岐の中で配列を作り直してます
配列を作り直したので、最後の「ses.send_email」の中の'ToAddresses'には「to_address」を直接入れてます


from __future__ import print_function
import boto3
import json
import logging
import dateutil.parser
from datetime import datetime, timedelta

logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')

def check_email(email):
    result = ses.get_identity_verification_attributes(Identities=[email])
    attr = result['VerificationAttributes']
    if (email not in attr or attr[email]['VerificationStatus'] != 'Success'):
        logging.info('Verification email sent. Please verify it.')
        ses.verify_email_identity(EmailAddress=email)
        return False
    return True

def lambda_handler(event, context):
    logging.info('Received event: ' + json.dumps(event))

    clicktype = event['deviceEvent']['buttonClicked']['clickType']
    attributes = event['placementInfo']['attributes']
    from_address = attributes['email']
  to_address = attributes['email']

    if not check_email(from_address):
        logging.error('From email is not verified')
        return

    if not check_email(to_address):
        logging.error('To email is not verified')
        return

    dsn = event['deviceInfo']['deviceId']
    remainLife = event['deviceInfo']['remainingLife']
    lifeBatttery = int(remainLife) * 15
    lifeDays = int(remainLife) * 3.65
    if lifeBatttery <= lifeDays:
        life = str(int(round(lifeBatttery,0))) + '回'
    else:
        life = str(int(round(lifeDays,0))) + '日'
    click_type = event['deviceEvent']['buttonClicked']['clickType']
    reportTime = event['deviceEvent']['buttonClicked']['reportedTime']
    ts = datetime.strptime(reportTime[:19], "%Y-%m-%dT%H:%M:%S")
    tdelta = timedelta(hours=9)
    ts += tdelta
    
    if (clicktype == "SINGLE"):
        to_address = []
        to_address.append("test1@example")
        to_address.append("test2@example")
        subject = 'SINGLE'
        body ='SINGLE\n' + str(ts) + '\n' + life
    elif (clicktype == "DOUBLE"):
        to_address = []
        to_address.append("test1@example")
        to_address.append("test2@example")
        subject = 'DOUBLE'
        body ='DOUBLE\n' + str(ts) + '\n' + life
    elif (clicktype == "LONG"):
        to_address = []
        to_address.append("test1@example")
        to_address.append("test2@example")
        subject = 'LONG'
        body ='LONG\n' + str(ts) + '\n' + life
        
    ses.send_email(Source=from_address,
                   Destination={'ToAddresses': to_address},
                   Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}})


LONGイベントには何を設定しようかな?

2018/03/13

Jelly Pro アップデートきた!!

Jelly Proのアップデートがきました。
ネットを見ると技適が電子表示になったのが話題になってる。
けど、Amazonで買ったので印刷では技適マークが付いてるんだよね。
それより今回のバージョン20180308-1055でセキュリティパッチレベルが2018年1月5日まで適用になったのが良かったかな。
最新のセキュリティパッチ(3月分?)はPixel辺りには配信されてるんだろうから、60日遅れ位ってところかな?
googleが企業ように推奨するAndoridの要件の一つに90日以内にセキュリティパッチが適用される事ってあるから、今の所Jelly Proは比較的いいペースでセキュリティパッチが適用されてるって考えていいのかな?
http://japanese.engadget.com/2018/02/22/android-google-7-21/

ところで桜デザインの背面カバーが発売されるみたいなんだ。
発売されたら日本のAmazonでも取り扱ってほしいなぁ。
だけどJelly Proの純正ケースは透明じゃ無いから桜デザインの背面カバー買ってもケース付けたらせっかくのデザインが見えないよね…
ケース無しで使うか、透明の純正ケース出てくれないかな〜

2018/03/08

Jelly Pro 衝動買い!!

Jelly Proを衝動買いしてしまった…
ちょっと我慢してたんだけど…
3月最初の入荷で思わずAmazonでポチッとしてしまった…

まずは大きさ比較。
想像以上に小さいです。
左 : N-01F ドコモのガラケー
中 : Jelly Pro
右 : MR04LN
折りたたみガラケーより小さい…



NichePhone-Sと比べてみた。
縦は若干長くて横幅は狭い感じ。

液晶の解像度が低いのでアプリによっては文字が滲むというか潰れるというか…
そこは大きさとのトレードオフという事で。
メールの文面とかなら気にならないと思う。

こんなに小さくてもちゃんとポケモンGoで遊べます。Skypeもできます。ポッドキャストも聞けます。
軽くて小さくて価格も安くて最近のアプリも使えて、これでもうスマホとして十分だな。
なぜ小さいスマホって開発されないんだろう?

いくつかのレビューにある通りバッテリー持ちは悪いです。
画面点けて通信させていじっていれば元々のバッテリー容量が小さすぎなのでしょうがないかな、と。
昔あったPebble Roundみたいにバッテリー保たない代わりに急速充電に対応して欲しかった。
Webを見ているとバッテリー容量を大きくして、っていう意見が目立つ気がするけど、個人的には今のバッテリー容量でいいからワイヤレス急速充電に対応してほしい。
3分充電したら80%位充電できる方が使いやすいと思うんだけど…

ソフトウェアのバージョンは、20171208_20171208-1920ってなってるんだけど…
Unihertzのフォーラムをみると、20180118_c223v37m_dfl-otaっていうのがあるんだ。
でも端末からソフトウェアアップデートを実行しても最新版ですって言われて2018年1月版のアップデートを適用できないんだ。
なんで?Amazonの日本技適版はちょっとアップデートチャンネルが違うのかな?
OSのセキュリティパッチは早く来てほしいんだけどなぁ〜
今年の半ばにはAndroid Oreの配信が予定されてるみたいだけど。
OSアップデートよりセキュリティパッチを定期的に配信してほしいです。


2018/01/19

絵文字は各社統一できないものなのかね〜

スマホはAndroid
タブレットはiPad
異なるOS間でメッセージをやり取りしていると絵文字のデザインが違いすぎて混乱するんだ。
iOSから↓の絵文字を送信して





Androidで受診すると…








絵文字のデザインって著作権かなんかで各社統一できないものなの?

2018/01/16

こんなiPad Pro用キーボード出ないかなぁ…

iPad ProのSmart Keyboard
コンセプトとしては便利なんだけど、実際iPad Proに付けて使うと色々と不満もでてくる。
サードパーティーだとSmart Connector搭載キーボードはLogicool製位しか出てないよね?
ほぼほぼApple純正Smart Keyboardだけなんだし、価格も高いんだから、もうちょっとAppleも真剣?にSmart Keyboardに取り組んでもいいんじゃないんだろうか?
で、妄想してみたけど…

キックスタンド風のSmart KeyboardはLogicool製のがあるけど、Logicoolのはケース部分がしっかり?してて結構重い。
10.5インチ用で528gってホームページに書いてあった…
iPad Airの時にあったSmart Caseみたいな感じで、でも背面側がキックスタンド風になる感じがいいな。
できればケースとキーボードで300g位の重量で収められてるとiPadの軽さが犠牲にならなくていいな…
次期iPad Pro発表と同時に新しいSmart Keyboardも開発してくれないかなぁ〜
iPad ProをPC的にアピールするには出来の良いキーボードが必要だと思うんだよなぁ〜

Moto G5s使ってます2

この間、茨城で鳴った緊急地震速報。 地震速報自体は誤報だったけど、Moto G5sでもちゃんと緊急地震速報受信できてました。 Androidの場合はメーカー側がソフトウェアを作ってないと受信できないみたいだね… Moto G5sは比較的安い海外メーカー製SIMフリースマホだけど、こういった緊急速報にも対応してくれてて助かります。 さて、去年の終わりにやっと端末アップデートが配信されました。 10月以降のセキュリティアップデート来ないなぁ〜って不安だったんだけど、暮れのアップデートで12月分のセキュリティが適用されました。 今月になってMoto X4にOreoのアップデート配信が始まったみたいなので、春までにはMoto G5sにもOreoのアップデートが来るかな? でもPixelとかには8.1が配信されてるんだよね? OSメジャーアップデートは必須じゃないけど、セキュリティアップデートは1ヶ月以内に最新版を配信してほしいなぁ…モトローラさんお願いします。 Androidの世界はOSマイナーアップデートって配信されないの?

2017/12/15

MotoG5Sを使ってます

Appleストアで買ったSIMフリーiPhone5SのAppleCareが先月で切れたので、スマホを新調してみました。
iPhoneはやっぱりSEでも端末価格が高額なので安価なAndroidにしてみました。
そうはいってもセキュリティは重要です。
まぁOSアップデートでセキュリティが担保される分、初期投資が高くついても長い目で見ればiPhoneの方がランニングコストは安いと言えるのかもしれないですが…
それでも先立つ資金も重要です。
おサイフケータイに対応したAndroidだとどうしても4万円以上してしまいます。
セキュリティに気を配られていそうなBlackBerryは7万円前後します…QWERTYキーボードの付いた端末はとっても憧れますが…
安価で、それでいてセキュリティパッチが比較的追随していてシンプルな端末…
そんな視点で売場を見ると…端末メーカーが独自でAndroidを弄って販売しているので、そんなシンプルな端末ほとんどない…
その結果、消去法でMotoloraのMotoG5Sを購入しました。
そこそこ安い : 税込3万円
シンプル : ほぼ素のAndroid
そこそこ月例セキュリティパッチに追随してそう : 1ヶ月遅れくらい?
MotoG5S Plusも悩んだのですが、こっちは性能が上がる分価格も上がって税込4万円位します。
4万円位になってくるとAppleでSIMフリーiPhoneSEを買った方がセキュリティ的にも長期間担保されそうだし、iPhone5Sのアプリをごっそり使えるので細かいこと考えずに単純に新しく処理能力の向上したiPhoneを使えます。
個人的にはNichePhone-SとiPad Proの組合せが持ち歩いてて楽しい気がするので、スマホは特に欲しいわけじゃないんです。
でも近所に買い物行くだけとか、ジムに行くだけの時にiPadを持ち歩くのはね…
NichePhone-Sだと緊急地震速報受信できないとか、メール使えないとか、日常生活を送る上でのちょっとした、でも結構重要な連絡やら情報受信が出来ません。
そんなちょっとした事を荷物を持たないで外出する時に済ますためにスマホの方が便利、という位置付けです。
なのでiPhoneやGalaxy、Xperiaの様な超高性能な機種は必要としてません。
極端に言えばWindowsPhoneでもBlackBerryでも絶対ダメじゃないんだけど…でも、ポケモンGOしたいんです!!
MotoG5Sは非力なCPUらしいのですが、ポケモンGOに関してはiPhone5S + iOS11よりも快適に動作します。
JoJoスマホ以来のAndroidですが、現状MotoG5Sは端末的には結構満足してます。
動作が極端に遅くなったり、挙動不審になったり、といった不安定さは今の所ありません。
欲を言うならこの品質で税込27000円位だと嬉しいです。
WindowsとMacが違う様に、AndroidもiOSとは違うからね…
どっちが極端に優れてるとか劣ってるとか無いよね…違うんだから…
唯一のAndroidの不満点はWebサイトやアプリにログインする時、iOSはExtensionで1Passwordを呼び出してIDとパスワードを入力できるんだけどNougat(Android 7.1.1)ではOSとして機能が無いみたい。
OreoだとOSとして機能が提供されるっぽいので早くOSアップデート来て欲しいなぁ~来年かな~