X(旧ツイッター)で、notnotzecoxao氏がPSP goでJigKickサービスバッテリーエミュレーターBaryon Sweeperを使用するためのサービスジグ”Baryon Sweeper hardware for PSP Go”の資料を公開していました。
バッテリー内蔵のPSP goでもBaryon Sweeper(パンドラバッテリー)が使えるようになるとお伝えしたニュースの続報です。
PSP goにはバッテリーポートがないので(バッテリー脱着不可で内蔵方式)Baryon Sweeperを使うにはI/Oポート(マルチユース端子)を使いサービスジグの認証に使うようですが、そのサービスジグの概要が明らかになりました。
Soon(TM) pic.twitter.com/DqqFNYEWuG
— Jose Coixao (@notnotzecoxao) August 16, 2023
おそらく今は手に入らないPSP goのクレードルに付いているコネクターを流用し、USBシリアル変換モジュール(FT232RLなど)をハンダ付けして作成するようです。
部品の入手性が限りなく怪しいですし、クレードルを所有していたとしても1つしか持っていないしょうから、それをバラしてしまうのも手が出しにくい要因になりそうな気がします。
[追記]
PSP DevWiki見て試したleo__oliveira氏がPSP goでサービスモードに入る様子を撮影した動画を公開していました。
https://twitter.com/leo__oliveira/status/1692017841187221639
初めまして。コメント失礼致します。
久しぶりにPSP関連の事を調べていたのですが、かつてあったサイトも無くなっていて、ここをきっかけに色々辿る事が出来ました。有難う御座いました。
お陰様でpysweeperを参考にして、PIC12LF1822とMPASMを使ってGoの充電通信プラグに入る小さなツールを作る事が出来ました。心ばかりですが、その時の調査結果をお伝えしたいと思います。
まず、ピン14はTXに、ピン17はRXに接続するものとされていますが、実際にはピン17のみで通信し、ピン14を接続しなくともサービスモードに移行する事が出来ました。恐らくピン17はオープンドレイン出力(Hi-Z/Lo)とトレラント入力の両方を持っており、プルアップ(10K〜24KΩ他)を通して電圧が与えられると通信が始まります。
許容電圧については調べていませんが、1.8Vだけでなく3.3Vでも問題無く動作しました。また、ストップビットは2ではなく1が使われています。
(他のPSPと完全に互換性があるのでは)
そして、ソースコードからはわからない事もありました。
時間は計測していませんが、各応答パケットにはタイムアウトがあります。
小さなRAM容量のPICにとって、アセンブリ言語で実装していてもAESコードは重く、システムクロックを1MHz(19.2KbpsのUARTに必要)から2MHzに上げる必要があり、その修正によって気が付きました。
応答パケットを送らない場合には、タイムアウトによる何度かの再試行の後、コマンドパケットは停止し、一瞬でも充電をしないとGoは起動しなくなります。起動した後はバッテリーがなくなった時の様に時刻設定が消えています。
あと、Go特有の90認証に移行する為の01コマンドの送信には5ミリ秒程の遅延が必要な様です。恐らく全てのコマンドパケットの送信に同じ遅延が必要なのでしょう。
これらの情報が何かの役に立てればと思います。
以下、念の為の英訳です。
With refernce to pysweeper, I used PIC12LF1822 with MPASM to make a tiny tool to enter the service mode that can be builtin into the plug of PSP Go.
As thanking, I’d like to share the result of investigations.
At first, The pin 14 as TX and the pin 17 as RX are well known, but in practice the only pin 17 communicates, and it was successfully to enter service mode without the pin 14.
Probably, the pin 17 has both output of OpenDrain(Hi-Z/Lo) and tolerant input, the communication begins when that is gived voltage via pullup(10K-24Kohm or stuff).
I haven’t inverstigated about the voltage of the tolerant, but that works fine not only 1.8V also 3.3V.
And the stopbit uses 1.
(It may also be fully compatible with other PSPs.)
Also I had stuff I couldn’t figure out from Python codes.
The each response seems to have the timeout.
I didn’t count the time, but I had to increase the system clock of PIC from 1MHz(reqired for the 19.2Kbps UART) to 2MHz, because AES codes are heavy for PIC that has small RAM even if that were implemented by assembly language.
I was able to realise that has the timeout through that fix.
In the case of sending no response packet, command packet is stall after several retries by the timeout, and PSP Go couldn’t boot normally unless the battery was charged for a short period of time.
After booting, the time setting was gone like the battery is empty.
And it seems like a delay of about 5mS is needed to send command ’01’ that kicks in the auth ’90’ phase.
Perhaps, every command packet might needs the same delay.
I hope there informations help in some way.