ジャンクのPCH-1100を買った

ヤフオクでジャンクのPCH-1100(PSVitaの3G+WiFiモデル)を買った。そしたらジャンクという割には動くものが降ってきた。

分解レポートではなくて、ただの自分用メモ。どこが動いてて、どこを交換すればいいのか的な。

 

パッと見つけた不都合はこんな感じ。

・↓ボタンのクリック感が無い
・×ボタンの反応がクソ
・Rトリガー死亡
・Startボタン死亡?
・電源ボタンが勝手に反応する(?)
・Volume-ボタンが反応しない

 

↓ボタンはちゃんと反応しているのでいいとして、×ボタンの反応がクソなのは結構きつい。一応分解してエレクトロニッククリーナーとかコンタクトスプレーとか放り込んだけどダメだった。連打すればたまに反応するのでひとまず…。

電源ボタンについては、たまに勝手に画面ついてウザいだけなのでいいとして(?)、Volume-ボタンはダメ。電源ボタンは交換可能だが、Volume-はメインボードに備え付けなので交換不可能。

 

メモカも何も無いので大した検証は出来てないけど、メインボードがダメって事でパーツ取り品になるな。ボタン類が死にかけってだけで、中身は割りと生きてたっぽいのが大変勿体無い感じはするけど、またジャンク品落としたし、普通に一台組み上がればそれでいいかなー。中古パーツのお店も見つかったし普通に遊ぶ1台組み上げる事も出来るっぽい。やったね。

 

最終的に死んでるパーツは、

・Rトリガーのスイッチ(右基盤のせいかも)
・右基盤
・メインボード(ほぼ全部生きてるけどVolume-スイッチは死んでる)

というところか。2000円ぽっちで落とした割にはいろんなパーツが取り出せそうだ。

 

ArchLinuxのリポジトリミラーをローカルに立てる

Ubuntuでならやったことあるんだけど、そういえばArchLinuxではやったことないな~とふと思ったのでやってみた。

基本はLocal Mirror – ArchWikiの通りにしたんだけど、再三「マジ?やめとけよ、な?無駄だろ?pacman cacheとかにしなよ?な?」と言われまくったので、sync.shの内容は省略する。

ちなみにいつもどおり、ArchLinuxと見せかけてAntergosでの実験である()

 

自分のところにリポジトリミラーを作っておけば、ローカルでの通信になるので非常に高速に処理が可能になる。リモートのミラーサーバからなら、大抵の場合ボトルネックになるのはインターネット回線(というよりミラーサーバ側の通信帯域制限)だけど、ローカルからだとストレージの速度になるんかな。LANはギガビットイーサだし。

 

/dev/sdc1を/var/mirrorとしてmount、その中にLinuxというディレクトリを作成し、その中にミラーリングするようにした。実際ArchLinuxのミラーサーバには不満全然なくていいんだけど、Antergosのほうにこそ不満があるため、こちらもミラーリングする。

ftp.tsukuba.wide.ad.jpから、core, extra, community, iso, multilib、それからmirror.us.leaseweb.netからantergosをrsyncでもらってくる。rsyncするサーバは新しいミラーのガイドライン|antergosウィキで見つけたものを使った。

/var/mirror/Linux/$repoではなく、/var/mirror/Linux/{archlinux, antergos}/$repoという構成にしておかないと、rsyncでmultilibが削除されてしまうので横着せず、それぞれ処理を行う。

最終的なフォルダツリーはこんな感じ。

$ cd /var/mirror/Linux
$ tree -d
.
├── antergos
│ ├── antergos
│ │ ├── i686
│ │ └── x86_64
│ ├── antergos-staging
│ │ ├── i686
│ │ └── x86_64
│ ├── iso
│ │ ├── release
│ │ └── testing
│ │   └── uefi
│ │      └── antergos-staging
│ │         ├── i686
│ │         └── x86_64
│ └── project
│    └── trace
└── archlinux
   ├── community
   │ └── os
   │   └── x86_64
   │     └── local
   ├── core
   │ └── os
   │   ├── i686
   │   └── x86_64
   ├── extra
   │ └── os
   │   ├── i686
   │   └── x86_64
   ├── iso
   │ ├── 2016.06.01
   │ │ └── arch
   │ │       ├── boot
   │ │       │ └── x86_64
   │ │       └── x86_64
   │ ├── 2016.07.01
   │ │ └── arch
   │ │   ├── boot
   │ │   │ └── x86_64
   │ │   └── x86_64
   │ ├── 2016.08.01
   │ │ └── arch
   │ │    ├── boot
   │ │    │ └── x86_64
   │ │    └── x86_64
   │ ├── archboot
   │ │ ├── 2016.05
   │ │ │ └── boot
   │ │ ├── history
   │ │ └── latest
   │ │    └── boot
   │ └── latest
   │    └── arch
   │       ├── boot
   │       │ └── x86_64
   │       └── x86_64
   ├── multilib
   │ └── os
   │ └── x86_64
   └── project
      └── trace
61 directories

後は好きなHTTPサーバを入れて、

・DocumentRootを/var/mirror/Linuxにする

・インデックス表示されるようにするといいかも

・ポート番号変えても良い

mirrorlistはそれぞれこんな感じで。

# ArchLinux
Server = http://localhost:1123/archlinux/$repo/os/$arch

# Antergos
Server = http://localhost:1123/antergos/$repo/$arch

ISOが手元にあるので、毎度インストールメディア作ろうと思って拾ってくる待ち時間を過ごす必要が無くなったし、新規にインストールするのも時間かからずいけるな!って気持ち。

新規にインストールする機会がそう沢山あるのかどうかは置いといて感がすごい。

ArchLinuxのmirrorlistを自動で選択してもらう

Reflectorを使うだけ。

$ sudo pacman -S reflector
$ sudo reflector --verbose --country Japan -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist

日本にいないとか実は国外サーバのほうが早い地域なんだよねとかの事情があれば(?)country指定はやめよう。

-l 200で200個調べる感じになるけど、countryでJapan指定したあたりでもうftp.jaist.ac.jpとftp.tsukuba.wide.ad.jpしか残ってない状態なんだなぁ…

HENkakuリリースされたのでPSVitaでHello Worldする

もうhenkaku.xyz行ったらそれだけでぜーんぶ完了しちゃって一瞬にして終了しちゃうので、自分でビルドしてHello Worldしてみるか~というお話。

https://henkaku.xyz/developer/を参考に!

 

あんまり多くをインストールしてないArchLinuxで実験。

取り敢えず環境構築。

cmakeが必要らしいのでまずそれをインストールしてから。

$ sudo pacman -S cmake
$ git clone https://github.com/vitadev/vdpm
$ cd vdpm
$ ./bootstrap-vitasdk.sh

パーミッション周りでめちゃエラー出てたっぽい。

bootstrap-vitasdk.shの中を見ると、/usr/local/vitasdkを$USER:$USERにchownするコマンドがあったぽいけど、$USERなグループってあったか?usersじゃない?

というわけで手作業で実行しリベンジ

$ sudo chown tea:users /usr/local/vitasdk
$ ./bootstrap-vitasdk.sh
$ export VITASDK=/usr/local/vitasdk
$ export PATH=$VITASDK/bin:$PATH
$ ./install-all.sh

インストールできたっぽいのでサンプルソースをパクってきてビルドする

$ cd ~
$ git clone https://github.com/vitasdk/samples
$ cd samples/hello_world/src
$ arm-vita-eabi-gcc -c -o main.obj main.c
$ arm-vita-eabi-gcc -Wl,-q -o homebrew.elf main.obj
$ vita-elf-create homebrew.elf homebrew.velf
$ vita-make-fself homebrew.velf eboot.bin

出力されたeboot.binをvpkに放り込めよって書いてあったけど、既存のvpkにアーカイブマネージャで突っ込むのじゃ流石にダメだったので、vita-pack-vpkを使う

こちらでバイナリが拾えそうだったので使わせていただく。libzip.so.4がないよと怒られたのでlibzipのインストールも。

$ unzip vita-pack-vpk.zip
$ chmod +x ./vita-pack-vpk
$ ./vita-pack-vpk
./vita-pack-vpk: error while loading shared libraries: libzip.so.4: cannot open shared object file: No such file or directory
$ sudo pacman -S libzip
$ ./vita-pack-vpk
Usage:
/home/tea/vita-pack-vpk [OPTIONS] output.vpk
-s, --sfo=param.sfo    sets the param.sfo file
-b, --eboot=eboot.bin    sets the eboot.bin file
-a, --add src=dst    adds the file src to the vpk as dst
-h, --help    displays this help and exit
$ alias vita-pack-vpk=/home/tea/vita-pack-vpk
$ cd samples/hello_world
$ vita-pack-vpk -b ./src/eboot.bin out.vpk
.sfo file missing.

sfoファイルがないとダメらしい。それらしくつくってリベンジ。

$ vita-mksfoex -s TITLE_ID=XXXX00001 "hello world" param.sfo
$ vita-pack-vpk -s ./param.sfo -b ./src/eboot.bin out.vpk

エラー出なかったのでこれをFTP経由でVitaに放り込んで、あとは通常のvpkと同じようにインストール。

 

バブルできた

バブルできた

 

 

LiveAreaもできる

LiveAreaもできる

 

ちなみに、今回使ったソースコードは、

#include <psp2/kernel/processmgr.h>
#include <stdio.h>

int main(int argc, char *argv[]){
printf("Hello World!\n");
sceKernelExitProcess(0);
return 0;
]

みたいな感じ。(サンプルそのまんま)

標準出力にHello Worldしたそのすぐ後にはもう終わりそうな行があるし、次の行にはreturnなので、つまりPSVita側で実行したらおおよそ何も見えずに終了してしまうのであった。

forで10000回くらい回せば見れるでしょ~とか思ってやり直してみたんだけど、時間が長くなっただけで画面には何もうつらなかった。アプリケーション起動しても標準出力は見えないんかなぁ。

 

ちなみに、ばっちりMakefile用意して貰えてるので、vita-pack-vpkの導入さえ出来ていれば全自動でイケる。