You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+19-9Lines changed: 19 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,15 @@ This is the SDK for [PenumbraOS](https://github.com/PenumbraOS/), the full devel
5
5
> [!CAUTION]
6
6
> This is extremely experimental and currently is usable by developers only. See [Installation](#installation) for in-progress instructions on how to set it up.
7
7
8
+
## Current functionality
9
+
10
+
The PenumbraOS SDK exposes the following restricted interfaces on the Ai Pin:
11
+
12
+
-[HTTP](sdk/src/main/java/com/penumbraos/sdk/api/HttpClient.kt) - Custom API implementation. Hopefully will add `OkHttp` handler soon
13
+
-[WebSocket](sdk/src/main/java/com/penumbraos/sdk/api/WebSocketClient.kt) - Custom API implementation. Hopefully will add `OkHttp` handler soon
Due to the locked down nature of the Humane Ai Pin, actually achieving access to "privileged" operations is very convoluted (`untrusted_app` cannot even access the network). The PenumbraOS SDK is designed to mitigate the setup issues and make a repeatable solution suitable for end users. The general spawn capabilities are provided by the [`pinitd`](https://github.com/PenumbraOS/pinitd/) init system.
@@ -17,9 +26,9 @@ This is the actual exposed API surface to developers, run from within your `untr
17
26
18
27
Quite literally just a bridge between the SDK and the privileged world. `untrusted_app` on the Pin is restricted to making binder connections to exclusively the `nfc` and `radio` SELinux domains. Since `radio` is everything having to do with cellular which is always in use, `nfc` becomes the obvious choice. [`pinitd`](https://github.com/PenumbraOS/pinitd/) is used to spawn a process as the `nfc` user and domain, and `app_process` is used to set up the JVM and run the actual service. Located in `/bridge`.
19
28
20
-
### Bridge Privileged Daemon
29
+
### Bridge System Service
21
30
22
-
The gateway to all actual privileged operations. Currently, all operations are exclusively things that can run in the `shell` domain (which is where the `pinitd` controller operates), so `bridge_priv_rs` also runs in `shell`. Spawns a TCP server for access from Bridge backed by a simple Protobuf protocol. Future optimization may necessitate direct TCP streams forwarded through Binder, but that would add complexity that is unnecessary at this time. Located in `/bridge_priv_rs`.
31
+
The gateway to all actual privileged operations. Currently, all operations are exclusively things that can run in the `system` domain, so `bridge-system` also runs in `system`. Communicates with `bridge-core` over Binder. Located in `/bridge-system`.
23
32
24
33
## Installation
25
34
@@ -33,24 +42,25 @@ This is an active work in progress and may be difficult to set up. Please reach
33
42
3. Start `pinitd`. At the time of writing this is accomplished by running:
34
43
35
44
```bash
36
-
settings delete global hidden_api_blacklist_exemptions && am force-stop com.android.settings
37
-
am start -n com.penumbraos.pinitd/.ManualLaunchActivity
5. Once `pinitd` is running and the services are enabled, you can start the bridge services. `bridge-service` depends on everything else (including MABL), so it will automatically launch all services as necessary on startup.
58
+
5. Once `pinitd` is running and the services are enabled, you can start the bridge services. ~~`bridge-service` depends on everything else (including MABL), so it will automatically launch all services as necessary on startup.~~
6. At this point, everything should be operational and the custom app should be able to talk to the PenumbraOS SDK. To avoid the app starting issue, you can use the "Apply changes" button in Android Studio to update your app without relaunching.
0 commit comments