Dropbox

小米 Xiaomi Mi5のROM焼きガイドのUNLOCKED BOOTLOADER手順では特別なUSBケーブルを使用すると書いてありますが、ケーブル自体の詳細は書かれていません。

で、Forumに質問を投げかけると数時間のうちに回答が得られました。

AliExpressというサイトでオーダー可能ということでした。どうもQualcomm chipを使った小米携帯電話に共通して使えるケーブルのようです。

中国の通販サイトtaobaoでも「小米bl锁刷机线」あるいは「小米深度刷机线」というキーワードで沢山のケーブルが見つかります。適当にその中のひとつをオーダーして到着したのが下のケーブルです。USB Type-Cの変換コネクターが2つも入っていたのが、ちょっと嬉しい。

XiaomiCable

手順通りにMi5の電源を切り、ケーブルのポタンを押したままMi5に接続、数秒後にボタンを離すと、あら不思議XiaoMiFlashからデバイスが認識されました。デバイスマネージャーで見るとこんな風に認識されています。色々と調べてみると、この9008というインターフェースはEDLモードと同じものらしいです。

MiSpecialCableDeviceMgr

このままXiaoMiFlashでflashボタンを押してみましたが、errorになってしまいROM書きは出来ませんでした。現在の所、必要としていないので上手くいかない理由の追求はしていません。

[ このボタンは何をしているのか? ]

次に、このボタンの仕組みを解明してみます。といっても、テスターで各線の導通チェックをしただけです。結論としては、ボタンを押すと+D (緑)とGND(黒)のラインがショートするようになっていました。このケーブルが入手困難な場合は自作することも難しくは無いと思います。<- ちゃちゃっとテスターで調べただけで、自作しての再現性を確認はしていませんので信頼度50%くらいに考えておいてください。

追記) 最初に紹介したスレッドのコメントでケーブルの作り方が紹介されていました。+DとGNDのショートで間違いないようです。

 

4月初めに一瞬公開された最初のGlobal ROMを入れた時と状況が変わっています。新たに購入したMi5 (自分の物に非ず) China Stable ROM 7.5.4.0を本日公開されたばかりのGlobal Stable ROM 7.5.2.0に上書きするにあたり以下の新しい手順書を参考にしました。

[ Bootloader Unlock ]

小米のBootloader Unlockは申請制でアカウント毎に許可が必要となります。実は4月にGlobal ROMを入れた際に同時にUnlockの申請を行っていました。その時は許可が降りる前にEDLモードによるROMの書き換えを行ったので使わずにいました。

参考スレッド : [Tools, Tips & Tutorials] [MIUI DEVICE TEAM] How to Unlock Bootloader of Mi5

< Xiaomiアカウントと端末の紐付けが必要 >

やっと、活用の機会が来たということで新しいMi5を接続してアンロックしようとするとDeviceのVerifyに失敗したとメッセージが出ます。再度Mi5を普通に立ち上げMiアカウントにログインさせてしばらく放置した後にアンロックを行うと成功しました。どうもアカウントと端末の紐付けが必須のようです。

[ Flash ]

デバイス・ドライバーで苦労する方が多いようですが、新しい手順書のドライバー導入手順はかなり明確に書かれているので問題が少ないような気がします。私は4月の時点でドライバーが入っていたのでドライバーの導入はスキップ出来ました。

http://en.miui.com/a-234.htmlの”Xiaomi Mi 5 Latest Global Stable Version Fastboot File Download”からダウンロードしたファイルはtarで固められています。これを展開しておきます。(Note: Chromeではダウンロード出来なかった)

  • 手順書に貼り付いているMi Flash Tool -BetaをWindowsに導入します。
  • Mi5をFastbootモード(電源オフからボリューム下と電源オン同時押し)にしてUSBケーブルを接続する。
  • XiaoMiFlashを起動しrefreshボタンを押してデバイスの情報が表示されたら準備完了。
  • selectボタンにて展開したfastbootイメージを指定。
  • 右下でclean allを選択。
  • flashボタンでROM焼きが開始される。

XiaoMiFlash

しばらく待つと端末が自動的に再起動して完了です。

[ Bootloader 再ロック ]

< Bootloaderがアンロックされた端末はMiアカウントへのログインが必要 >

初期設定の過程でBootloaderがアンロックされていることを認識しているようで端末の情報からMiアカウントの番号が自動的に表示されログインしなければ先に進むことが出来ませんでした。設定完了後にログオフすることは出来ますが、友人の端末ですしBootloaderをロックしておくことにしました。

fastbootモードでPCに接続し”fastboot oem lock”を投入すればOKです。

これで再度初期化を試してみたところMiアカウントのログインはスキップ出来るようになっていました。

 

友人から依頼されて新しいMi5をChina Stable ROM 7.5.4.0をGlobal Stable ROM 7.5.2.0で上書きしました。それに先立ち最新情報を調べてみると、前回の記事「小米5 Xiaomi Mi5にGlobal ROMを入れた」に書いた内容は全く役に立たない事がわかりました。

  • EDLモードが無くなっているらしい(fastboot oem edlを試したけど効かなかったです)
  • 前回の記事でリンクしたForumのスレッドが読めなくなっている(EDL前提なので当然かも)

改めて情報を探して見ると、

Fastbootイメージの公式リンクはChromeでクリックするとMIUIのトップページが表示されてしまいます。Safariだとちゃんとダウンロードが始まるので、うまくダウンロード出来ない場合はブラウザーを変えて試してください。

ということで、今回はBootloaderをUnlockしてGlobal ROMの上書きを行いました。それについては別途書きたいと思います。

試してはいないので何とも言えませんが、他にも2つほど使えそうなスレッドがあります。

KKJConvには秘密がある。「しんせん」で深圳と変換したり、人柱隊の田路さんの苗字が変換出来るように辞書を弄ってある。しかし、それだけではない。

漢字変換画面に「しねしね」とだけ入力しコピペ画面に移行する。一度KKJConvを終了し再度立ち上げると、なんと恐ろしいことにKKJConvが「死ね死ね団」モードになってしまう。しかも、いちど設定すると戻す方法は無い。

古いモバイラーの方は、この画面を見てピンとくるであろう。Windows Mobileの神様、いや将軍様であるアスカルさんの大陸諜報活動新聞をリスペクトしたテーマなのである。

KKJConv Secret Theme

漢字変換が出来る最初のバージョンKKJConv v0.6は7月2日に公開しました。

ローマ字変換が出来るバージョンを公開すると同時にかな漢字変換のための辞書オブジェクトを書き始めました。最初のバージョンは単純なもので一つの辞書ファイルを頭から順次検索して入力された「かな」にヒットする漢字文字列を順次返すだけの物で直ぐに完成しました。むしろインライン変換の動作をKKJConv本体に作り込むのに随分と手間取ったことを覚えています。それでも今振り返ってみるとv0.5からv0.6の公開までに一週間しかかかっていないのは、やはりバイタリティに溢れていたのだと思います。

この後、漢字変換にキャッシュを搭載したり、大きな辞書を搭載するために辞書の分割を行ったり、あるいは細かい機種別対応を重ねて行きました。2006年末のv1.0に至るまで二十数回のバージョンアップを行いました。平日に少しずつ更新。金曜日一日寝かせて毎週土曜日に新しいバージョンの公開というペースが出来上がっていました。常に使ってくださっている方々からのフィードバックがあるので、とても楽しい時間を過ごすことが出来ました。

最初からソースコードを公開していましたが、だんだんと見通しが悪くなってしまい。ちょっとばかり恥ずかしいものになりました。本職のプログラマーでは無いことを言い訳にしておきたいです。Javaを知ってはいたものの、まとまった量のコードを書くのは初めてで、またオブジェクト指向なブログラムの勘所も良くは分かっていませんでした。そのため関数型プログラミング的なコードになっています。とくにキーコードから動作を決めるための部分がとても長い条件分岐の羅列になっています。まるで昔のGUIブログラムみたいです。今、この部分を書き直すとしたら少なくとも理想的なキーボードを持った仮想ハードウェアで動くKKJConvと機種別動作を吸収するオブジェクトに分割することと思います。

ひとまず、これにてKKJConv開発秘話は完了とします。

キーコード表示プログラムの表示機能が調子良いので、それを元にローマ字変換が出来るようにしたKKJConv v0.5を公開したのが6月25日でした。アルファベットを表示してローマ字として確定すると、その場で平仮名に置き換わるという動作でインライン変換への手応えも確かめました。FEPでは無いのでアプリケーションに直接入力は出来ません。コピペ画面を経由して文字列をクリップボード経由でアプリケーションに渡す方法もここで確立しました。E61を入手して10日目のことでした。今の体力、気力ではとても考えられないスピード感です。

実は画面の表示速度についてはグラフィックス画面を使用していることもあり、実際に試すまで実用的な速度が出るのかどうか心配していました。最初の計画では高速化を狙って画面の中で更新が必要な部分だけを書き換えていく予定でしたが、結局のところ一文字入力する、シフトを押す、あるいはカーソルを移動するなど画面に何かしら変化が生じる度に画面全部を書き換えるという方法だけで最後まで済ませてしまいました。

この漢字変換の出来ないKKJConvを使って、かなだけでブログを書いてくれた人なども居て感激したことを覚えています。

またKKJConv v0.5公開の翌日にはピードラさんがソニエリのM600、山根さんがBluetoothキーボードで基本動作が可能であることを確認されました。KKJConvは漢字変換出来るようになる前から多機種対応が宿命となったのでした。

今回からは、やや開発者よりの内容になります。

C++で本格的なFEPを作るのはプログラミング技術もさることながら、それ以外の問題が大きすぎてすぐに諦めました。後にM-FEPでそれを乗り越えた、ま〜さんはすっごく偉いです。

ということで、多少なりとも経験のあるJava MIDPでのテストを開始しました。調査のために作成したキーコード表示プログラムをひとつの成果として公開したのが6月21日でした。一番の目的はキーを押した時にどんなキーコードがMIDPに認識されるかを調べるものですが、実はもうひとつ画面の表示についてもテストをしていました。

UIQで実現されていたKanaKanjiClipは、何とか使えるものの今一つ使い勝手が良く有りませんでした。デバイスの反応速度にも問題がありましたが、出来合いのGUI部品を使用していたため変換中の文字列と変換結果が別の場所にあり結果がうまく同期しない、あるいは視点が移動するのが最大の問題でした。

何と言っても日本語入力を実現するにあたって使い勝手を考えるとインライン入力が欠かせません。それを実現するためにグラフィックス画面に文字を配置していくことにしました。その文字配置の基本的な動作や反応速度もこのプログラムで確認出来ました。

キーコードの確認は、もともと矢印キーや緑の通話キーがどんなキーコードを返すがが知りたかったのですが、思いがけずE61のキーボードがかなり変態であることも、この段階で知ることが出来たのは良かったです。

またこの時点ではあまり意識はしてませんでしたが、後にKKJConvを多機種に対応するにあたってキーコード表示プログラムが役立ちました。

また宣伝したわけではないのですが、このプログラムを公開した直後にmaitomoさんとピードラさんがブログにコメントを付けてくださっています。しかも日本語入力ソフトを作る前提でコメントを書かれているようで、とても不思議です。なぜなんだろう?

2005年1月から中国に長期出張というかたちで滞在を開始し、初めて海外の携帯電話に触れました。もともと小さなデバイスが好きで有ったこともあり、スマートフォン黎明期のSymbianやWindows Mobile登載の携帯電話に魅了されてしまいました。

2006年5月くらいにノキアからE61というQWERTYキーボードを登載しつつコンパクトなSymbian S60 3rd登載の携帯電話が出るというニュースを見かけてからは、それが欲しくてたまりませんでした。

もともと小型でインテリジェントなデバイスを使いこなすひとつの手段として自作のプログラムが組むことを目的というか楽しみにしていたのでE61でのプログラミング環境の調査、整備をしながら入手する日を楽しみにしていました。実は前年から使用しているSonyErricsonのP910cではQWERTYキーボードを使用したKanaKanjiClipという日本語入力アプリケーションを使用していましたので、新しい端末ならばそれなりに快適な日本語入力を実現できると見込んでいて、最初の開発ターゲットは日本語入力のテストと決めていました。

どんなやりとりが有ったかは忘れましたが、上海のモバイラー友達である、うめさん経由で香港のreveilさんにE61を代理購入してもらう話がいつの間にか出来上がっていました。それを広州に出張したおりに受け取ったのが6月15日のことです。何故か、その時には、うめさんもreveilさんも私が何かしら日本語入力に関するプログラミングの計画を持っている事が分かっていて(自分で言ったに違いないですけど)、何も出来ていないうちから、随分と期待されて少々焦ってしまいました。

reveil師匠作のKKJConvアニメーション

KKJConvの最初のバージョンを公開したのは2006年6月25日です。もう10年もたちました。KKJConvはNokia E61を入手して作り始めた日本語入力アプリケーションですが、これを公開したおかげで、色々な人との繋がりが出来ました。Facebook友達の多くはKKJConvの公開を通じて知り合った人たちです。東京、香港、タイ(リアルでお会いしたことはありませんが)、そして中国での生活に豊かさと幅を与えて下さった、元・現上海および北京在住の方々とは今でも仲良くして頂いています(現中国在住者は激減してしまい、寂しい限りです)。

KKJConvにも若干のマネタイズの機会や試みもありましたが実際のお金には結びついてはいません。しかしながら、この多くの人との繋がりが何事にも代えがたいものになり、それだけで十分に元がとれたどころか、大きな利益になりました。

そんなこんなで想い出深いKKJConvの誕生秘話(ちょっと大げさ)をいくつかブログに書いてみたいと思います。6月に数回に分けて書く予定ですが、大した内容にはなりませんので軽く流して頂きたいと思います。

以前、「上海地下鉄に無料Wi-Fi電波が飛んでいる」という記事を書きました。その中でAndroidで使用する時は専用アプリケーションの導入が必要と書きましたが、コメントにてユーザーエージェントでiPhoneに見せかければ大丈夫だと教えて頂きました。これは名案です。早速試して見ました。

[ 準備 ]

ユーザーエージェントを変更出来るブラウザーだけです。
– 小米 Xiaomi Mi5 + Global ROM(7.2.8.0 MAAMIDC)の場合は標準ブラウザーが使えました。設定->高度な設定/User agent stringでiPhoneを選択すれば準備完了です。
Nexus6 + AndroidNにはFirefoxを使用しました。FirefoxにPhonyというAdd-onを導入すると簡単にユーザーエージェントをiPhoneに変更出来ます。

[ 使用してみる ]

端末によって挙動がやや異なりますが、SSID “花生地铁WiFi”に接続してAndroid用のアプリケーションをダウンロードを即す画面(下のような画面)が出たところでiPhoneに見せかけたブラウザーから適当なwebサイトにアクセスするとiPhoneの時と同じく携帯電話番号にSMSでアクセス番号を送る画面を出すことが出来ました。これで無事にAndroidからもアプリケーションを使用することなく地下鉄のフリーWiFiにアクセス出来ました。

Screenshot_2016-03-04-16-54-07

ちなみに、私のMi5では上の画面の代わりに真っ白なページが表示されます。そのためAndroidアプリケーションすらダウンロード出来ませんが、iPhoneのふりをしたブラウザーでアクセスすることにより無事にWiFiが使えました。

2回目のアクセスも上と同じ手順を行いますが、電話番号の入力などは不要で、ワンクリックでWiFiにアクセスすることが出来ます。