stylesheet

2020-01-04

PhotoVision TV 202HWの制限解除

年末大掃除で、いただき物の202HWが出てきた。
基本、テレビは殆ど見ないこともあり、いただいてすぐにしまい込んでいたのだと思う。

この製品について改めて調べてみると、フルセグ、防水、外部アンテナにも対応するなど、契約者数水増しや契約解除忘れを狙ったセコい商売といった事情があるにせよ、実質タダのおまけ製品としてはなかなかのものだったのではないだろうか。

ただし、この製品、専用のSIMを抜いたり契約を解除するとTV視聴時やスライドショー時に、以下のようなメッセージが画面半分を専有し大きく視聴が制限されるようになるというトラップ付きであった。

3G通信が限定されているため緊急地震速報等の一部機能が使用できません。 通常の状態へ戻すには電波の良いところへ移動するか、お客様の契約状態をご確認ください。

そういった事情もあって、当方が譲り受けることとなったわけではあるが、またしかし、ある界隈ではこの制限の解除手法が確立されており、比較的簡単に行えることも知られている。

前置きが長くなったが、今回はこの製品PhotoVision TV 202HWの制限解除を行う方法をメモ。

無事制限解除成功の暁には、防災グッズとして災害時の出動に備える予定だ。

§ 解除手順

TL;DR

大まかな手順は以下の通り。202HW本体のファームウェアバージョンはα28.1であった。

  • 基板上のRxとTx信号を使用してシリアルコンソールに接続。
  • SDカードに保存しておいたTV制限解除プログラム(apk)をインストールしてTV制限解除。
  • システムファイルを改鋳版と差し替えてスライドショーの制限解除。
  • シェルコピーでルート化、ADBサービス有効化でUSBアクセス復活。

使ったもの

  • ハンダゴテ
  • はんだ
  • ジャンパー線
  • プラスドライバー
  • カッターナイフ
  • SDカード
  • Orange Pi Win (シリアル通信用)
  • Windows PC

ファイルの入手先

基板上のRxとTx信号を使用してシリアルコンソールに接続。

202HWの電源をOFFにし、裏蓋2枚を外して基盤を露出させる。細かい作業になるのでディスプレイを取り外したほうが作業しやすい。
基板裏面にアクセスできたら、カッターやドライバー等でレジストを剥がしてはんだ付けする。接触が悪いと通信に支障が出るので、導通を確認しながら丁寧に。

シリアル接続にはUSBシリアル変換器を使用するのが一般的だが、あいにくと所持していないためOrange Pi WinのGPIOで代用。UART2を使用する。

GPIO UART2
CON1-P32 UART2_RTS PB2
CON1-P36 UART2_CTS PB3 
CON1-P38 UART2_TX  PB0 
CON1-P40 UART2_RX  PB1 

P32のRTS(Request To Send)とP36のCTS(Clear To Send)は、フロー制御用の信号線なので今回は使用しない。

202HWとは最小構成のUARTで接続。 一方のTX(Transmit Data)と他方のRX(Receive Data)を互い違いに結線するクロス結線を行う。(202HWのTxをOrangePiのRxへ、OrangePiのTxを202HWのRxへとつなぐ。)

結線を完了したら、OrangePiからシリアル通信を開始する。
ソフトウェアは今回はminicomを使用。

$ sudo apt install minicom
$ sudo minicom -s

ポート:/dev/ttyS2 速度:115200bps データ:8bit パリティ:None ストップ:1bit フロー制御:None

ACアダプタを接続して充電状態にするとターミナルにずらずらとLinuxの起動メッセージが表示されるので、起動完了まで暫く待つ。
準備ができたらENTERキーで202HWのコンソールに接続できる。

取りこぼしたデータは文字化けとして現れる。

充電モードの場合はルート起動するのでコンソールもルートシェルになる。

SDカードに保存しておいたTV制限解除プログラム(apk)をインストールしてTV制限解除

TVの制限解除を行うためにapkをインストールする。通常のAndroidと同じようにpmコマンドが使用できる。
APKファイルの受け渡しにはSDカードを使用すると良い。

$ pm install /mnt/sdcard2/photovision_tv_function_unlocker.apk

上記プログラムを追加すると、メニューへ制限解除ツールが追加される(「本体設定」の下に追加される)ので、そちらから制限解除の有効/無効を行えるようになる。

制限解除プログラムはGitHubで公開されている。

https://github.com/173210/photovision_tv_function_unlocker

およそ7年前のプログラムではあるが、特に問題なく動作した。
ざっとソースコードを確認したところ、ContentResolver経由でnone_alert_mode設定を変更しているだけのようだ。

システムファイルを改鋳版と差し替えてスライドショーの制限解除

ざっくりと、dpf-libs.jarファイルをSDカードへ抽出し、WindowsPC上で改鋳版を生成、本体へ書き戻しといった手順となる。

システムファイルを改鋳することになるので最悪起動できなくなることに留意する。

jarファイルをSDカードに吸い出す。cpコマンドは使用できないので、ddコマンドで代用。

$ dd if=/system/framework/dpf-libs.jar of=/mnt/sdcard2/dpf-libs.jar

入手したjarファイルをPC上で、展開、デコンパイル、パッチ当て、再コンパイル、再圧縮を行う。
必要なプログラムを同梱したスクリプトが用意されているのでそれを使用する。javaは別途インストールが必要。
今回はOpenJDKをインストールしたので、パスを通して、スクリプトを実行する。jarファイルはスクリプトと同じ場所にコピーしておく。

$ set path=%path%;c:\jdk-13\bin
$ go.cmd

生成したmod.jarをSDカードに保存し、202HWへ受け渡し、ルートコンソールでオリジナルと置き換える。

$ dd if=/mnt/sdcard2/dpf-libs_mod.jar of=/system/framework/dpf-libs.jar
$ chmod 644 /system/framework/dpf-libs.jar
$ reboot

システムを再起動するとシステム更新処理が走り、スライドショーが制限解除される。

シェルコピーでルート化、ADBサービス有効化でUSBアクセス復活。

ルートシェルで、シェルをコピーしてsuコマンドを生成。また、adbサービスを有効化してmicroUSBでアクセスできるようにする。


$ cd /system/bin
$ cat sh > su
$ chmod 4755 su

$ setprop persist.service.adb.enable 1

以上。