better error messages

This commit is contained in:
2026-09-27 19:47:36 -04:00
parent f0f2e30e08
commit 02ca1888f2

View File

@@ -1,48 +1,33 @@
<!doctype html>
<html>
<head>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Notaquest</title>
<script src="https://cdn.jsdelivr.net/npm/tweetnacl@1.0.3/nacl-fast.min.js"></script>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css" />
<meta
name="description"
content="Enable ADB on your Meta Quest without creating a developer organization or verifying with a credit card. One-click tool using Web Bluetooth."
/>
<meta
name="keywords"
content="meta quest, quest 3, adb, developer mode, sideload, sidequest, no organization, web bluetooth"
/>
<meta name="description"
content="Enable ADB on your Meta Quest without creating a developer organization or verifying with a credit card. One-click tool using Web Bluetooth." />
<meta name="keywords"
content="meta quest, quest 3, adb, developer mode, sideload, sidequest, no organization, web bluetooth" />
<!-- Open Graph (social sharing) -->
<meta
property="og:title"
content="Notaquest - Enable ADB on Meta Quest without a developer org"
/>
<meta
property="og:description"
content="Skip the organization, skip the credit card. Enable ADB on your Quest from a web page."
/>
<meta property="og:title" content="Notaquest - Enable ADB on Meta Quest without a developer org" />
<meta property="og:description"
content="Skip the organization, skip the credit card. Enable ADB on your Quest from a web page." />
<meta property="og:url" content="https://notaquest.owendeed.com" />
<meta property="og:type" content="website" />
<!-- Twitter/X -->
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content="Notaquest - Enable ADB on Meta Quest without a developer org"
/>
<meta
name="twitter:description"
content="Skip the organization, skip the credit card. Enable ADB on your Quest from a web page."
/>
</head>
<body>
<meta name="twitter:title" content="Notaquest - Enable ADB on Meta Quest without a developer org" />
<meta name="twitter:description"
content="Skip the organization, skip the credit card. Enable ADB on your Quest from a web page." />
</head>
<body>
<main class="container">
<h1>Notaquest</h1>
<p>
@@ -79,7 +64,7 @@
</p>
<p>
currently only tested on meta quest 3 but should work on other devices.
make a gitea issue (link at the bottom) if it doesn't work for any
make a github issue (link at the bottom) if it doesn't work for any
reason.
</p>
<details>
@@ -88,9 +73,7 @@
meta's api blocks requests from websites (CORS). the proxy forwards
your request to graph.oculus.com and nothing else. nothing is stored
or logged. you can
<a href="https://api.notaquest.owendeed.com" target="_blank"
>view the live worker source code</a
>
<a href="https://api.notaquest.owendeed.com" target="_blank">view the live worker source code</a>
or check the network tab yourself. the code is a literal quine
program, if i change it, it will change.
</p>
@@ -152,14 +135,10 @@
</details>
<br />
<a href="https://www.tampermonkey.net/">tampermonkey website</a><br />
<a
href="https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo"
>chrome (+chromium based browsers) extension</a
>
<a href="https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">chrome (+chromium
based browsers) extension</a>
<br />
<a href="https://addons.mozilla.org/firefox/addon/tampermonkey/"
>firefox (+firefox based browsers) extension</a
>
<a href="https://addons.mozilla.org/firefox/addon/tampermonkey/">firefox (+firefox based browsers) extension</a>
</details>
<details>
<summary>automated method (tampermonkey required)</summary>
@@ -183,11 +162,9 @@
</p>
</li>
<li>
<button
onclick="
<button onclick="
window.location.href = 'https://secure.oculus.com/#notaquest'
"
>
">
get token automatically (tampermonkey script must be installed)
</button>
</li>
@@ -201,11 +178,7 @@
<ol>
<li>
Log into
<a
href="https://developers.meta.com/horizon/manage/"
target="_blank"
>developers.meta.com/horizon/manage/</a
>
<a href="https://developers.meta.com/horizon/manage/" target="_blank">developers.meta.com/horizon/manage/</a>
</li>
<li>Press F12 to open developer tools</li>
<li>Application -> Cookies -> click the site</li>
@@ -213,11 +186,7 @@
<li>Paste it below</li>
</ol>
</details>
<input
id="token"
placeholder="paste your Meta token here"
style="width: 100%; max-width: 500px"
/>
<input id="token" placeholder="paste your Meta token here" style="width: 100%; max-width: 500px" />
<br /><br />
<button onclick="showQR()">
generate prefilled token qr code for mobile
@@ -229,12 +198,8 @@
<button id="go" onclick="enableADB()">enable adb</button>
<p id="nobt" style="display: none"></p>
<p id="status"></p>
<a href="https://github.com/owenthepuppy/notaquest/issues"
>report an issue here</a
><br />
<a href="https://gitea.owendeed.com/Toasterkitten/notaquest"
>view the source here</a
><br />
<a href="https://github.com/owenthepuppy/notaquest/issues">report an issue here</a><br />
<a href="https://gitea.owendeed.com/Toasterkitten/notaquest">view the source here</a><br />
<a href="https://owenfeldman.com">a project by owenfeldman.com</a>
</main>
<script src="https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js"></script>
@@ -509,15 +474,29 @@
encrypt(devReq, sharedKey),
);
if (devRespRaw.length) {
var devResp = parseProto(decrypt(devRespRaw, sharedKey));
var decrypted = decrypt(devRespRaw, sharedKey);
if (decrypted) {
var devResp = parseProto(decrypted);
if (devResp[2] === 0) {
status(
"done! adb should be enabled. restarting your headset may be required for it to work.",
);
status("done! adb should be enabled. restarting your headset may be required for it to work.");
return;
}
if (devResp[3]) {
var errMsg = new TextDecoder().decode(devResp[3]);
if (errMsg.toLowerCase().includes("internet")) {
status("your quest isn't connected to wifi. connect it to wifi and try again.");
return;
}
status("quest rejected the command in a way i don't understand. do basic debugging, reboot, new token, all the normal stuff. if not working still, send a github issue with this data (it shouldn't have private info): " + errMsg);
return;
}
status("quest responded but said something i don't understand. this is not an issue i have encountered yet. do basic debugging, reboot, new token, all the normal stuff. if not working still, send a github issue with this data (it shouldn't have private info): response fields: " + JSON.stringify(Object.fromEntries(Object.entries(devResp).map(([k, v]) => [k, v instanceof Uint8Array ? Array.from(v).map(b => b.toString(16)).join('') : v]))));
} else {
status("quest responded but decryption failed. something went very wrong, try a new token, if that doesn't work, make a github issue. raw length: " + devRespRaw.length);
}
} else {
status("no response from quest for dev mode command. BLE connection may have dropped, or the Quest refused something silently.");
}
status("sent! check if adb is enabled.");
} catch (e) {
status(
"error: " +
@@ -527,5 +506,6 @@
}
}
</script>
</body>
</body>
</html>