Dropbox

GearBestさんから提供いただいたRedmi4 PrimeにはショップROMが焼かれていました。それをメーカー提供の正規ROMに変更してみました。

[ ROM焼き ]
手順は一番簡単な方法で入りました。手順については以下のページに従いました。
[ROM] Good News!! Global ROM for Redmi 4 Prime is Officially Released! Download Here!
このページのRecovery ROMを使用した方法が簡単で良いです。将来ROMバージョンが更新された時のことを考えると以下のページを参照した方が良いでしょう。
公式ダウンロードページ

注意)この方法でGlobal ROMが焼けるのはすでにGlobal ROMが入っているからで中国版ROMからGlobalへの変更はfastboot手順が必要です。

手順書のとおりですが簡単に手順を紹介しておきます。
1. Redmi4d上にdownloaded_romというフォルダーを作成する
2. ダウンロードしたファイルをzipファイルのままdownloaded_romにコビーする
3. Redmi4でSettings/About phone/System updatesで右上のメニュー(三個の点です)に入りChoose update packageでdownloaded_rom内のzipファイルを選択

以上でROMの更新が行われます。

[ MoreLocale 2 がエラー – 小米アカウントが必要 ]
小米ROMには日本語ロケールが含まれていませんのでお馴染みのMoreLocal 2をGoogle Playから導入します。adbを使ってパーミッションを設定してないと動かないのヘルプに表示されている通りです。

まずはUSBデバッグの設定です。小米の場合はAbout phoneでMIUI versionを5回ほどタップするとDeveloper optionが使用できるようになります。ここでUSB debuggingをオンにして、以下のコマンドをPCから実行しました。

adb shell pm grant jp.co.c_lis.ccl.morelocale android.permission.CHANGE_CONFIGURATION

しかし以下のエラーが出て実行されません。

Operation not allowed: java.lang.SecurityException: grantRuntimePermission: Neither user 2000 nor current process has android.permission.GRANT_RUNTIME_PERMISSIONS.

もう一つDeveloper optionでUSB debugging (Security settings)というのをオンにする必要があります。ただし、これをオンにするためには携帯電話を小米のアカウントにログインしておく必要があります。この設定をオンにした後で再度、先のadbコマンドの実行でMoreLocal2が使用できるようになりました。

GearBestさんから提供いただいたRedmi4 Primeのカメラのレビューです。

携帯電話は日常のスナップ写真を撮ることも大きな役目のひとつになっています。カメラの性能も携帯電話を選ぶ大事に基準と言って良いでしょう。Redmi 4は価格を考えれば十分に合格点と言えます。

わたしが撮影した写真をいくつか紹介します。いかFlickrへのリンクになっていますので、Flickrに行けばオリジナルの写真および写真のパラメーターなども確認できます。

IMG_20170306_144716

IMG_20170306_071740

IMG_20170306_171312_HDR

IMG_20170302_171417

IMG_20170302_173425_HDR

IMG_20170302_182231_HDR

IMG_20170308_055436

GearBestさんから提供いただいたRedmi4 Primeのソフトウェア関連のレビューです。

今現在手元にあるRedmi 4 primeについて書きます、ファームウェアのバージョンや状態による違いもあるかも知れません。

[ 国際版ファームウェアが入っている ]
ラベルから判断して、元々は中国国内向けのファームウェアが入っていたと思われます。現在のファームウェアはRedmi 4 Prime Globalの最新版(2017/03/05現在)であるV8.1.2.0MBEMIDIが入っています。

[ 日本語ロケールが入っている ]
本来、小米のファームウェアには日本語ロケールは搭載されていませんが、それが選択可能になっているのはGearBestさんによるカスタムROMになっているからと思われます。ただし地域の設定には日本はありません。

言語として日本語を選択すると設定画面などもそこそこ日本語表示になります。ただし完全に全てのシステムメニューが日本語になるわけではありません。

[ Google対応 ]
Global版のファームウェアが焼かれているので、あたりまえですがGoogle対応にまったく問題はありません。

[ MIUI8 ]
小米共通の話ですが、MIUI特有の癖みたいなものはあります。わたしが気づいた例では、ステータスバー常駐のブログラムなどが思ったように動かなかったりします。とはいえ、ほとんどの場合、普通にAndroid6として使用可能です。

[ カスタムROMの弊害 ]

カスタムROM(ショップROM)が入っているためか、上のような警告が何時も出ています。気にしなければ問題はありません。

今入っているファームウェアより新しいレベルが無いので分かりませんが、おそらくOTAによるファームウェアの更新は出来ないものと思います。

暇が出来たら普通のGlobal ROMを自分で焼いてみようかと思います。

GearBestさんからRedm 4のちょっと良い方、Primeバージョンが送られてきました。最初、Proと書いていましたが、公式サイトではPrimeになっていました。

[ ハイライト ]
– DualSIMのどちらも4G対応(同時に使えるのは片方だけ)なので、2枚のSIMで状況によってデータ通信を切り替えたい場合には重宝します
– 441PPIの画面は滑らかで綺麗
– 指紋センサーの反応が良く、スリープからの復帰にも使える

[ ハードウェアスペック ]
細かいスペックは公式ベージに譲るとして普通のRedmi 4とRedmi 4 Proの違いだけまとめておきます。

Redmi 4 Redmi 4 Prime
画面解像度 1280×720 296PPI 1920×1080 441PPI iPhone7+が401PPI
Bluetooth 4.1 4.2
RAM 2GB 3GB
ROM 16GB 32GB 32GBあるとちょっと安心
プロセッサー Snapdragon 430 1.4GHz Snapdragon 625 2.0GHz
GPU Adreno 505,450MHz Adreno 506,650MHz

画面は流石に441PPI、精細かつ美しいです。ストレージも32GBあれば普通には困らないです。SIMを一枚しか入れなれば、マイクロSDカードもごく普通に使えますので容量不足に悩むことはなさそうです。

[ ベンチマーク ]
格安端末ですが、ハードな3Dゲームとかを動かそうと思わなければ十分な性能を持っていると思います。参考のためにAnTuTu Benchmarkの結果を貼り付けておきます。

[ SIMスロット ]

Dual SIMですが、SIM2のスロットはMicro SDカードとSIMのどちらかしか入りません。またSIMスロット1はマイクロSIM、SIMスロット2はナノSIMとサイズが違うので注意が必要です。わたしのSIMはすべてナノSIMになっているので、SIMアダプターを使用してSIMスロット1に入れました。このSIMトレイの場合はSIMアダプターを使用しても特に不安はありません。


ひとつ注意が必要なのはSIMトレイを本体に入れる時は、SIMが落ちないように普通SIMが入っている方を上にします。この時、携帯電話本体は液晶面を下にした状態で挿入する必要があります。反対向きでも、結構中まで入っていきます。間違いに気づいたあと、取り出すのに苦労しました。SIMトレイの裏側には注意書きがありますが、裏側ですしなかなか気づきません。


所謂DSDSです。片方のSIMで4G通信を行いながらもう一つのSIMは3Gで電話の待受が出来ます。Huaweiだと片方のSIMスロットだけが4G対応ですが、小米のDual SIMでは、どちらのSIMスロットも4G通信が可能です。そのため設定画面からどちらのSIMでデータ通信を行うかを選択するだけで2つのSIMを使い分けて4Gによるデータ通信が行えます。

[ 指紋センサー ] 調子良し!

Redmi 4の指紋センサーは本体裏側のカメラの直ぐ下にあります。手にした時に自然と人差し指で触ることの出来る場所です。
正直言って小米5の指紋センサーの体験からさほど期待はしていませんでした。ところが、この指紋センサーの反応がとても良いです。加えてスリープ状態から指紋センサーで目覚めさせることが出来るので携帯電話を手にする直ちにスリープ解除とロック解除を同時に行うことが出来るので、すこぶる使い勝手が良いです。

机の上に置くLEDスタンドライトを小米の通販で購入しました。値段は169元と買いやすい値段ながらシンプルで美しいデザインです。

LEDライトなのでコンセントをさしてスイッチを入れれば、当たり前のように使えます。ところが、そこは小米、LEDライトなのにWiFi接続して携帯電話からのコントロールが可能になっています。オフオンとか明るさくらいだと、ぜんぜん有り難みは無いのですが、このLEDライトは色調も変えることが出来るものです。携帯電話のアプリケーション(小米機器に共通のアプリケーションです)を使用すると状況に応じたプリセット値に設定することが可能になります。色調の調整はダイヤルでも可能です。

上の写真は携帯電話の自動モードで撮ったので補正が入ってしまい違いが分かりにくいですが、実際には右側のモードではかなり暖かみのある色合いになっています。

LEDは白いものと赤みかがったもの入っていて、その組み合わせで色調がコントロールされています。

電源はACアダプターになっていて入力は100-240V, 出力は12V0.5Aのものが使用されています。

xmmini_dlna

小米ルーターminiを全くルーターとしては使用せず純粋にDLNAを使用したメディア・サーバーとして構成してみました。たっぷりと音楽やら動画ファイルを入れるためにちょっと贅沢にIntelのSSDをUSB接続しました。OpenWrtが導入直後の状態ではUSBにデバイスが接続されたことはログを見ると分かりますが、USBストレージとしては認識されません。

[ USBストレージの設定 ]
参考ページ : OpenWrtメモ: USBメモリを使える様にする
# opkg update
# opkg install kmod-usb-storage

やっと /dev/sda が現れます。
# opkg install kmod-fs-vfat
# opkg install kmod-nls-cp437
# opkg install kmod-nls-iso8859-1

これで準備完了です。
mount -t vfat -o iocharset=utf8 /dev/sda2 /mnt
みたいな感じでマウントします。後ほどファイルのコピーやDBの構築でMac OS XやLinuxに接続するため取り回しやすいようにFAT32でフォーマットしました。また、日本語ファイル名を正しく取り扱うためにiocharset=utf8の指定が必ず必要です。英字のみのファイル名だけならば気にしなくても大丈夫です。

またせっかくSSDを接続するので小さなパティションにswapを確保しました。
# mkswap /dev/sda3
# swapon /dev/sda3

今のところswaponとmountはブート後に手動で行っています。fstabとか存在していないので、自動マウントは色々と手順を踏まなければなりません。そのうち気が向いたら試すことにします。

[ DLNAサーバーの導入 ]
opkg install minidlna
これだけで動きます。minidlnaと控えめな名前ですが、わたしの必要としている機能的には十分な内容です。そのまま/mntにメディア・ファイルを置くだけでサーバーとして機能しました。ただし既定値ですと小米ルーターをサーバーとして接続した端末(小米ルーターのOpenWrtからDHCPでIP Adderessを取得する端末)に対してDLNAサーバー機能を提供します。

わたしの場合は、既存の家庭内ネットワークに小米ルーターを接続し、家庭内ネットワークに接続している端末にDLNAサーバー機能を提供するため構成を変更しました。まずはOpenWrtの設定で家庭内ネットワークの無線LANに接続を行いました。ifconfigでインターフェース名を確認します。わたしの場合は2つの別々のネットワークに2.4GHzと5GHzのインターフェースを接続したのでwlan0とwlan1が現れました。-> (注:実際に使用すると2.4GHzの方はデータの流れ的にちょっと厳しいです。5GHzは概ね良好ですが、HDに映像でたまにカクカクします。有線接続が良いかも)

minidlnaの構成ファイル /etc/config/minidlna  の option interface ‘br-lan’ の部分を interface ‘wlan0′,’wlan1’ と書き換え /etc/init.d/minidlna restart を行います。これで目的の構成になりました。

ただし、沢山のファイルを持とうとするとminidlnaサーバーがDBを構築するのに時間がかかったり、不可能だったするそうです。解決するためには、別途Linuxマシンを用意して、そこにUSBストレージ上でDBを構築する方法が公式ガイドに書かれています。

公式ページ: OpenWrt MiniDLNA

このページのChaos Calmer Tips以下を忠実に実行すればLinuxマシンでのDB構築が出来ます。あまり頻繁にファイルを更新しなければ、この方法で大丈夫でしょう。同じ環境をLinux上に作成しファイルの入れ替えとDB再構築後にrsyncで同期するみたいな運用が楽で良いかも知れません。

[ DLNAクライアント ]
– VLC : 使いやすいです。macOS, iOS, Androidで使用しています。
– KODI (旧XBMC) : 定番ですが、ちょっと使い方に癖があります。Android STBで使用しています。VLCがテレビ対応すると楽なんですが、まあKODIがあれば大丈夫。日本語のタイトルが表示できない(KODIの問題では無いかも)。
– YAMAHA RX-V473 : 愛用のお値打ちAVアンプ。残念ながら動画の再生は出来ませんが、音楽再生には一部適していると思います。
– YAMAHA BD-S473 : ブルーレイディスク・プレーヤーです。最近あまり使っていないのでEthernetケーブルを接続してみました。動画だけ再生できて音楽はダメ。タイトルの表示が遅いし、たまにハングして電源コードを抜かなければならなくなる。期待はずれでした。

[ トラブル ]
時々、小米ルーターmini自体がハングして電源コードを抜かなければならなくなります。ちょっと無理してるのかも知れません。ただいま原因の切り分け中ですが、OpenWrtでのDLNA構成例という意味では有効と思われますので、原因が判明する前に記事を公開することにしました。

追記) ハングの原因は小米ルーターminiのUSBポートの電力不足でした。IntelのSSDを直挿しするとマウントしなくても数時間放置するとハングします。電源付きのUSB Hubを使用することで安定稼働することが出来ました。ちなみに小米ルーター3にIntel SSDを直挿しした場合は24時間以上安定稼働します。

小米ルーターmini + OpenWrt + Softether VPN/StoneでRaspberry Pi3の置き換えを狙いましたが、残念ながら性能的に及ばす断念しました。普通に動画とかを見ることは十分に出来ますので、Raspberry Pi3設置前であれば納得して使用していたと思います。

小米ルーター青春版よりはかなり速くなりました。Softether VPNでの実環境で、もの凄く大雑把な数字で比較すると以下のような感じです。

Raspberry Pi3 1MB/s : 小米ルーターmini 700KB/s : 小米ルーター青春版 560KB/s

[ 電波の飛びが悪い問題 ]
小米ルーターmini + OpenWrtにおいてWiFiのチューニングに問題があります。実測したところ5GHzは問題ないようですが、2.4GHzの電波はオリジナル・ファームウェアに比べるとかなり弱いです。Raspberry Pi3と同じくらいの電波の強さですので、使えないことは無いです。OpenWrt Pandraboxというファームウェアを使用すると大丈夫のようですが、ちょっと古いです。OpenWrtように作ったStoneは動きましたので、何かしら自分のアプリケーションを動かすことは可能ですが、今ひとつわたし的なメリットは無さそうです。

これまた大雑把ですが、2.4HGzでオリジナル・ファームウェアで-40dBm出ている環境でOpenWrtにすると-70dBmになってしまいます。

小米ルーターminiの使いみちは検討中。

小米ルーターminiにもSoftether VPNとstoneを導入しました。小米ルーター青春版に入れたバイナリーは使えませんので改めてビルドしました。

ただし小米ルーター青春版で使用したSDKではターゲットがうまく設定出来ませんでした。何かしら方法があるのでしょうが、もっと簡単な、というかより正しいSDKの導入方法が見つかりました。といっても公式ガイドに書かれている方法なんですが、メモとして書き残しておきます。

OpenWrtのUsing SDKページに書かれているように各プラットフォーム別のビルド済SDKがあります。小米ルーターminiはramips/mt7620のページ以下にルーターに導入するバイナリーと共にビルド済のSDKが置いてあります。

使用したのはOpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2です。

これを展開した後は、targetの選択が必要が無い以外は以前の記事と同じ手順です。

– 「小米ルーター青春版 + OpenWrtにSoftether VPNを導入する
– 「小米WiFiルーター青春版 + OpenWrtにstoneを導入する」 ひとつだけ訂正があります。 STAGING_DIR指定するのはopenwrt/staging_dir/以下のtargetから始まるディレクトリにしました。わたしの場合は”openwrt/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2″です。

xiaomiyouthmini

小米ルーター青春版とmini

またまた小米ルーターで遊んでいます。小米ルーター青春版はモバイルバッテリーでも稼働できる手軽さはあるが性能的に限界があるし小米ルーター3にはOpenWrtが出ていないので今度は小米ルーターminiで再度Raspberry Pi3の置き換えに挑戦します。

まずはOpenWrtの導入編です。

ただし、小米ルーターmini+OpenWrtは普通には使えていますが、電波の飛びが弱いようです。これについては、改めて検証します。

[ 開発版ファームウェアの導入とSSHの有効化 ]
OpenWrtのガイドにはURLを使ったtelnetの有効化が書かれていますが最新の開発版ファームウェアでは使えませんでした。おそらく、OpenWrtのページにある古い開発版ファームウェア入れれば大丈夫でしょう。わたしは素直に小米の公式に従ってSSHを使用できるようにしました。

– AndroidもしくはiOSの小米アプリから小米ルーターminiに一度アクセスして小米アカウントとルーターを関連付けます。
公式ページから開発版ファームウェアをダウンロードします。わたしの場合はバージョン2.11.25でした。
– ガイドに従いUSBメモリーにmiwifi.binというファイルネームでコピーし、ルーターに挿入しリセットボタンを押したまま電源オンで書き込みます。
– 開発版ファームウェアで立ち上がったら、次はSSHモジュールの導入です。
https://d.miwifi.com/rom/ssh からSSHモジュールをダウンロードする。
– これもUSBメモリーにmiwifi_ssh.binというファイルネームでコピーして、ルーターに挿入しリセットボタンを押したまま電源オンで書き込みます。
リブートするとsshでrootログイン出来るようになります。パスワードはファイルをダウンロードしたページに書かれています。

[ OpenWrtの導入 ]
特別なことはなく公式ページに従えば導入出来ます。
ssh root@192.168.31.1のようにしてルーターにログインします。
# cd /tmp
# wget <公式ページにリンクがあるバイナリーファイルのURL>
# cat /proc/mtd でOS1バティションがあることを確認する
# mtd -r write <バイナリーファイル名> OS1

以上でOpenWrtが起動します。例によってパスワードは無しWifiはオフで立ち上がります。青春版の時とは違いGUIインターフェースであるLuCIは最初から入っています。

以前、小米ルーター青春版をリピーターとして簡単に構成した時はかなり遅くて使う気になりませんでした(数値は取っていませんが)。

もうちょっと改善しないものかとrelaydを使用した構成を試してみました。速度もだいぶマシになりましたので、構成方法についてメモを残しておきます。

公式ガイドに従いますがOpenWrtのレベルの差によるものか、多少アレンジが必要でしたので全ての投入コマンドを書いておきます。

前提としてファームウェアの初期設定状態から構成を開始するものとします。

操作はPCからEthernetケーブルを白いEthernetコネクターに接続し”ssh root@192.168.1.1″でログインして行います。

[ wifiの活性化 ]
# uci set wireless.@wifi-device[0].disabled=0
# uci commit wireless
# wifi

[ 接続先のWifiネットワークの確認 ]
公式ガイドにあるiwlist scanの方は動かなかったです。
# iw dev wlan0 scan

[ wwanインターフェースの構成 ]
# uci set network.wwan=interface
# uci set network.wwan.proto=dhcp
# uci commit network

/etc/config/networkに該当のセクションが作成されます。

[ Wirelessネットワークを既存のWifiルーターに接続する ]
# uci set wireless.radio0.channel=11
# uci set wireless.@wifi-iface[0].network=wwan
# uci set wireless.@wifi-iface[0].mode=sta
# uci set wireless.@wifi-iface[0].ssid=xmff-relay
# uci set wireless.@wifi-iface[0].encryption=psk2
# uci set wireless.@wifi-iface[0].key=secret-key
# uci commit wireless

– “ssid=”には自分のWifiアクセスポイントのSSIDを記入します。
– “encryption=”はサンプルではpskになっていましたが、わたしの場合はpsk2にしないとダメでした。
– “key=”には自分のWifiアクセスポイントのパスワードを記入します。

構成は/etc/config/wirelessに反映されます。

# wifi down; wifi
で構成を有効にします。しばらくしてifconfigを投入するとwlan0に既存のwifiルーターから割り当てられたIP addressが確認できます。

[ relaydの導入 ]

小米ルーターが既存のwifiルーターを経由してインターネットに接続されたのでrelydモジュールを導入します。
# opkg update
# opkg install relayd

ルーターのブート時にrelaydが起動するようにします。
# /etc/init.d/relayd enable

[ relay用のインターフェースを作成 ]
# uci set network.stabridge=interface
# uci set network.stabridge.proto=relay
# uci set network.stabridge.network="lan wwan"
# uci commit network

/etc/config/networkに変更が反映されます。

[ インターフェースLANにgatewayと dnsを設定 ]
# route -n | grep UG
これは既存のルーターのgatewayアドレスの確認ためです。分かっている場合は必要なし。

# uci set network.lan.gateway=192.168.1.1
# uci set network.lan.dns=192.168.1.1
# uci commit network

192.168.1.1の部分は自分のWifiルーターのIP addressに変更します。

[ DHCPを無効にする ]

既存のWifiルーターのDHCPを使用しますので小米ルーターのDHCPは無効にします。

# uci set dhcp.lan.ignore=1
# uci commit dhcp

[ firewallを調整 ]
# uci set firewall.@zone[0].forward=ACCEPT
# uci set firewall.@zone[0].network="lan wwan"
# uci commit firewall

ここまでの設定で白いEthernetコネクターに接続したPCから既存のWifiルーターを通してインターネットに接続可能です。引き続きWifiアクセスポイントを設定し、WifiからWifiへのリピーターとして機能するようにします。

[ Wifiアクセスポイントの設定 ]
# uci set wireless.@wifi-iface[1].device=radio0
公式ガイドでは上のようなコマンドで設定するようにガイドされていますが、”uci: Invalid argument”と言われてしまいます。正しいコマンドが分からなかったので構成ファイルを直接編集しました。
# vim /etc/config/wireless
以下の設定を追加しました。
config wifi-iface
option device 'radio0'
option mode 'ap'
option ssid 'RepeaterWirelessNetwork'
option encryption 'psk2'
option key 'RepeaterWirelessPassword'
option network 'lan'

‘RepeaterWirelessNetwork’と’RepeaterWirelessPassword’は、適当に変更します。

[ 設定の有効化 ]
/etc/init.d/dnsmasq restart
/etc/init.d/firewall restart
wifi down; wifi

[ 小米ルーターのIP address変更 ]
わたしの場合は必要ありませんでしたが、もし既存のWifiと小米ルーターのIP addressサブネットが同じ場合は以下のコマンドで違うサブネットに変更します。
# uci set network.lan.ipaddr=192.168.2.1
# uci commit network
# reboot

[ 小米ルーターへのログイン ]
Wifi、Ethernet接続ともにDHCPで既存のWifiアクセスポイントからIP Addressが割り当てられます。このため、そのままでは元々小米ルーターが持っているIP Addressにはアクセス出来ません。わたしの場合は2つの方法でアクセスしています。
– PCのIP Addressを手動で小米ルーターのサブネットに合わせて設定する。わたしの場合は192.168.1.10に設定してssh root@192.168.1.1を実行しています。
– 小米ルーター自身もwlan0が既存のWifiルーターからDHCPでIP Addressを取得しています。ここに対して別のPCからsshでアクセスすることも出来ます。Wifiルーターなどで静的にIP Addressを設定できれば、この方法が簡単で良いです。

[ パフォーマンス ]
決して速いとは言えませんが、それを承知の上で使用すれば実用的に使うことは出来ます。iPod touchのSpeedtestで試したところ、直接既存のWifiアクセスポイントに接続して30Mbpsくらい出ている状態で小米ルーター青春版のリピーターから接続すると10Mbpsくらいが限界のようでした。