add structure to WebUSB proof of concept page

This commit is contained in:
Daniel Micay 2021-01-05 07:44:57 -05:00
parent 3fad67eee7
commit f63c74c8bd
2 changed files with 62 additions and 15 deletions

View File

@ -1,30 +1,43 @@
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT
async function doConnect() {
async function adbRebootBootloader() {
const webusb = await Adb.open("WebUSB");
console.log("connected");
if (webusb.isAdb()) {
console.log("adb");
const adb = await webusb.connectAdb("host::");
await adb.reboot("bootloader");
if (!webusb.isAdb()) {
console.log("error: not in adb mode");
return;
}
if (webusb.isFastboot()) {
console.log("fastboot");
const fastboot = await webusb.connectFastboot();
await fastboot.send("flashing unlock");
await fastboot.receive();
console.log("connecting with adb");
const adb = await webusb.connectAdb("host::");
await adb.reboot("bootloader");
}
async function unlockBootloader() {
const webusb = await Adb.open("WebUSB");
if (!webusb.isFastboot()) {
console.log("error: not in fastboot mode");
}
console.log("connecting with fastboot");
const fastboot = await webusb.connectFastboot();
await fastboot.send("flashing unlock");
await fastboot.receive();
}
if ("usb" in navigator) {
console.log("WebUSB available");
const connect = document.getElementById("connect");
connect.onclick = doConnect;
const adbRebootBootloaderButton = document.getElementById("adb-reboot-bootloader");
adbRebootBootloaderButton.disabled = false;
adbRebootBootloaderButton.onclick = adbRebootBootloader;
const unlockBootloaderButton = document.getElementById("unlock-bootloader");
unlockBootloaderButton.disabled = false;
unlockBootloaderButton.onclick = unlockBootloader;
} else {
console.log("WebUSB unavailable");
}

View File

@ -54,7 +54,41 @@
been implemented and it doesn't do anything useful yet. You should ignore this page
and use the <a href="/install">official install guide</a>.</p>
<button id="connect">Connect</button>
<section id="enabling-oem-unlocking">
<h2><a href="#enabling-oem-unlocking">Enabling OEM unlocking</a></h2>
<p>OEM unlocking needs to be enabled from within the operating system.</p>
<p>Enable the developer options menu by going to Settings ➔ About phone and
pressing on the build number menu entry until developer mode is enabled.</p>
<p>Next, go to Settings ➔ System ➔ Advanced ➔ Developer options and toggle on the
'Enable OEM unlocking' setting. This requires internet access on devices with Google
Play services as part of Factory Reset Protection (FRP) for anti-theft protection.</p>
</section>
<section id="connecting-phone">
<h2><a href="#connecting-phone">Connecting the phone</a></h2>
<p>Connect the phone to the computer. On Linux, you'll need to do this again if
you didn't have the udev rules set up when you connected it.</p>
</section>
<section id="unlocking-the-bootloader">
<h2><a href="#unlocking-the-bootloader">Unlocking the bootloader</a></h2>
<p>First, boot into the bootloader interface. You can do this by turning off the
device and then turning it on by holding both the Volume Down and Power buttons.
Alternatively, use ADB to reboot to the bootloader with the button below:</p>
<button id="adb-reboot-bootloader" disabled="disabled">Reboot to bootloader with ADB</button>
<p>Unlock the bootloader to allow flashing the OS and firmware:</p>
<button id="unlock-bootloader" disabled="disabled">Unlock bootloader</button>
<p>The command needs to be confirmed on the device and will wipe all data.</p>
</section>
</main>
<footer>
<a href="/"><img src="/logo.png" width="512" height="512" alt=""/>GrapheneOS</a>