Amazon.co.jp

GAMES25
SSG uploader
GAMES24
FC2ブログ


games24con@yahoo.co.jp
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
前提
Homebrew 開発環境構築
1.2を完了した環境からの手順

インストール解説
Windouws10のUbuntuを起動する
/opt/devkitpro に移動
wget で devkitARM_r47-x86_64-linux.tar.bz2 を保存する
tar で 保存したdevkitARM_r47-x86_64-linux.tar.bz2を解凍する
環境パスを通す
DEVKITARM に $DEVKITPRO/devkitARM を登録
以前の処理でDEVKITPROには/opt/devkitproが登録されている

インストール手順
cd /opt/devkitpro
sudo wget https://github.com/devkitPro/buildscripts/releases/download/devkitARM_r47/devkitARM_r47-x86_64-linux.tar.bz2
sudo tar -xvjf devkitARM_r47-x86_64-linux.tar.bz2
sudo rm devkitARM_r47-x86_64-linux.tar.bz2
echo "export DEVKITARM=$DEVKITPRO/devkitARM" >> ~/.bashrc
source ~/.bashrc

ビルド方法
cd ~
git clone https://github.com/ktemkin/Atmosphere.git
cd Atmosphere/fusee
make

実行方法
Atmosphere/fusee/src/main.c を編集してから
Atmosphere/fusee/ でmake すると
Atmosphere/fusee/out/ に fusee.bin が作成される
このfusee.binを Switchで実行する
a.Windouws ならこの方法で実行する
b.UbuntuならUbuntu(仮想マシンではない)にコピーしてペイロード実行する

ソース
ディスプレイに文字列表示 呼び出し方はprintfと同じ
printk("00000000 %08x\n", 10);

押されてるボタン取得 戻り値に押されている値が返る
#include "hwinit/btn.h"
u32 res=btn_read();
#define BTN_POWER 0x1
#define BTN_VOL_DOWN 0x2
#define BTN_VOL_UP 0x4

スリープ 引数に渡したマイクロ秒だけsleepする
#include "hwinit/util.h"
sleep(1000000);//1秒スリープ

シャットダウン
#include "hwinit/max77620.h"
#define MAX77620_REG_ONOFFCNFG1 0x41
#define MAX77620_ONOFFCNFG1_PWR_OFF (1 << 1)
i2c_send_byte(I2C_5, 0x3C, MAX77620_REG_ONOFFCNFG1, MAX77620_ONOFFCNFG1_PWR_OFF);

リカバリモードで再起動
#define PMC_BASE 0x7000E400
#define APBDEV_PMC_SCRATCH0 0x50
#define _REG(base, off) *(vu32 *)((base) + (off))
#define PMC(off) _REG(PMC_BASE, off)
PMC(APBDEV_PMC_SCRATCH0) = 2; //Reboot into rcm.
PMC(0) |= 0x10;
while (1)
sleep(1);
スポンサーサイト
Ubuntu18.04 LTS
python3.6.5 (Ubuntu18.04に元から入っている)

環境構築
Ubuntu18.04を新規インストール(仮想マシンではだめ)
python3.6.5を更新
gitインストール
setuptoolsモジュールインストール
usbモジュールインストール

ターミナルを起動する
最初に設定
sudo apt-get install python3 libusb-1.0-0-dev
sudo apt-get install python3-setuptools
sudo apt install git
cd ~
git clone https://github.com/walac/pyusb
cd pyusb/
sudo python3 setup.py install

ペイロード実行
cd ~
git clone https://github.com/reswitched/fusee-launcher.git
cd ~/fusee-launcher/
sudo wget https://misc.ktemkin.com/fusee.bin
sudo python3 ./fusee-launcher.py fusee.bin

DSC_0210.jpg

Screenshot from 2018-04-28 22-40-08


コード実行
SwitchをUSBでPCと接続しリカバリモードで起動する
~/fusee-launcher/ に実行するコードのbinファイルを配置して、
sudo python3 ./fusee-launcher.py binファイル
と実行する

ペイロード、Homebrew 開発環境構築
sudo apt install make
mkdir ~/tmpf
cd ~/tmpf
sudo wget https://raw.githubusercontent.com/devkitPro/installer/master/perl/devkitA64update.pl
sudo chmod +x ./devkitA64update.pl
sudo ./devkitA64update.pl
cd ..
sudo rm -r ~/tmpf
cd /opt/devkitpro
sudo wget https://github.com/devkitPro/buildscripts/releases/download/devkitARM_r47/devkitARM_r47-x86_64-linux.tar.bz2
sudo tar -xvjf devkitARM_r47-x86_64-linux.tar.bz2
sudo rm devkitARM_r47-x86_64-linux.tar.bz2
echo "export DEVKITPRO=/opt/devkitpro" >> ~/.bashrc
echo "export DEVKITARM=$DEVKITPRO/devkitARM" >> ~/.bashrc
source ~/.bashrc

ビルド方法
cd ~
git clone https://github.com/ktemkin/Atmosphere.git
cd Atmosphere/fusee
make

実行
cp ~/Atmosphere/fusee/out/fusee.bin ~/fusee-launcher
cd ~/fusee-launcher
sudo python3 fusee-launcher.py fusee.bin



Ubuntu16.04での方法
python3.5

環境構築
Ubuntu16.04を新規インストール(仮想マシンではだめ)
python3.5を更新
gitインストール
setuptoolsモジュールインストール
usbモジュールインストール

ターミナルを起動する
最初に設定
sudo apt-get install python3 libusb-1.0-0-dev
sudo apt install git
sudo mkdir ~/a
cd ~/a
sudo wget https://bootstrap.pypa.io/ez_setup.py
sudo python3 ez_setup.py
cd ~
git clone https://github.com/walac/pyusb
cd pyusb/
sudo python3 setup.py install

ペイロード実行
cd ~
git clone https://github.com/reswitched/fusee-launcher.git
cd ~/fusee-launcher/
sudo curl https://misc.ktemkin.com/fusee.bin -O
sudo python3 ./fusee-launcher.py fusee.bin

コード実行
SwitchをUSBでPCと接続しリカバリモードで起動する
~/fusee-launcher/ に実行するコードのbinファイルを配置して、
sudo python3 ./fusee-launcher.py binファイル
と実行する




UbuntuUsbインストールメディア作成ツール
unetbootin-windows-661.exe



cd ~/Atmosphere/fusee
make
cp ~/Atmosphere/fusee/out/fusee.bin ~/fusee-launcher
cd ~/fusee-launcher
sudo python3 fusee-launcher.py fusee.bin
sudo vi ~/Atmosphere/fusee/src/main.c


git clone https://github.com/nwert/hekate.git
リカバリモードの脆弱性
SwitchのUSBリカバリモードには、イメージを読み込む際に脆弱性が存在する
この脆弱性はFWアップデートでは対策することができず、
対策するにはハードウェアの変更が必要


リカバリモード起動方法
リカバリモードへ入る方法は、いくつかある
a.Switch本体の10Pinと1Pin(または7Pin)をショートさせ、本体のボリュームアップ、電源ボタンを同時に押し、
起動させるとリカバリモードに入る
b.Switchのカーネルモードコードを実行して入る
c.eMMCが取り外されていた場合、Tegraはブート時にリカバリモードに入る

a.の手順
1pin10pin.png
右側のジョイコンのコネクタ部分の下にある
両端の1Pin、10Pinをジャンプワイヤでショートさせる

syoto.jpg

PCとSwitchをUsbType-CケーブルまたはSwitchProコン付属Usbケーブルで接続する
Switchの電源を落とす
Switch本体のボリュームアップ、電源ボタンを同時に押し、
起動させる
または、Switchの電源メニューからボリュームアップを押しながら再起動をする

douzi.png

リカバリモードの起動に成功すると、
Switchの画面は暗いまま、何も表示されない
デバイスマネージャーにAPXと表示される

APX.png


起動に失敗している場合
通常通りSwitchのロゴが表示され、ホーム画面が表示される

リカバリモードは電源長押しで終了できる。

HiLetgo® 140pcsジャンプワイヤキット SKS-140 単線タイプ ハンダ付けなし ブレッドボード ジャンパーワイヤ ジャンパーケーブル DIY キットボックス Arduinoに対応


UsbType-Cケーブル



https://fail0verflow.com/blog/2018/shofel2/
https://github.com/Atmosphere-NX/Atmosphere

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。