+++ title = "ii Service Providers" author = ["ii friend"] draft = false +++ ## Preface This is mainly a set of links for now, but I'd like to be able help folks help others self-host their own infrastructure. (setting up anything really, Mastadon might be a good target) Currently this can be a bit complicated with needing to download and burn USB drives, look up lots of documentation etc. ### Someone with an iiSP phone They can plug the phone into computers, phones, tablets etc and provide remote support (via the website that created the phone). The owner of the phone will eventually learn how to support others by watching (pairing?) with someone at the iiSP in real time on site. They could charge money or get paid for this service as they learn. Eventually working at the iiSP or helping start / own run new ones. To make it simple for them initally, once an iiSP phone is plugged into a computer with Chrome, it will [automatically launch a website](https://hackmd.io/EUVMbXwVRDG4hTUQqqbmSQ#Platform-Capability-descriptory) configured by the build iLandingPage via WebUSB. The website can then communicate directly to the phone over webusb, which can it turn initate mounting of USB disks, keyboard and mouse access. Streaming the screen via the browser could happen as well. One initial application could be to remotely support setting up a kubernetes node w/ kubevirt + gitlab + coder w/ all the src, sites, and infrastructure necessary to host a graphene instance. The ability to edit the phone code via gitlab/coder, have the builds auto built and available to install via the web would give us phones that can setup infra to setup phones. ### Creating / Flashing an iiSPhone Anyone with a supported/flashable device can create an ii Service Phones by visiting the website of their local iiSP. This would allow fully remote support. remotely via iisp phones. Likely using kube-virt VMs on an 'even single node' cluster ## iiOS Git Hub org He's not used the org in years. iios/phone would be fun Email github.com/iios tzllangzi@vip.qq.com ## ii USB Gadget - <https://pid.codes/1209/CAFE/> - <http://www.linux-usb.org/usb.ids> cafe / ii iigadget - <https://usb-ids.gowdy.us/read/UD/1209/cafe> ## graphene ### infrastructure <https://grapheneos.org/articles/grapheneos-servers#table-of-contents> ### build <https://grapheneos.org/build> ## webinstall for android ### graphene os webinstall code <https://github.com/GrapheneOS/grapheneos.org/blob/main/static/js/web-install.js> ### upstream android-webinstall - <https://github.com/kdrag0n/android-webinstall> - <https://protonaosp.org/install/web?utm_source=github&utm_campaign=fastboot.js> ### fastboot.jo - <https://www.npmjs.com/package/android-fastboot> - <https://github.com/kdrag0n/fastboot.js> ## Web USB ### Community Group <https://wicg.github.io/webusb/> Basically a google project: Reilly Grant, Ken Rockot, and Ovidio Ruiz-Henriquez #### USB Specification Table 9-14. Device Capability Type Codes USB 3.2 Revision 1.1.pdf - <https://www.usb.org/document-library/usb-32-revision-11-june-2022> | Capability Code | Value | Description | |-----------------------------|-------|-----------------------------------------------------------------------------------------| | Wireless_USB | 01H | Defines the set of Wireless USB-specific device level capabilities | | USB 2.0 EXTENSION | 02H | USB 2.0 Extension Descriptor | | SUPERSPEED_USB | 03H | Defines the set of SuperSpeed USB specific device level capabilities | | CONTAINER_ID | 04H | Defines the instance unique ID used to identify the instance across all operating modes | | PLATFORM | 05H | Defines a device capability specific to a particular platform/operating system | | POWER_DELIVERY_CAPABILITY | 06H | Defines the various PD Capabilities of this device | | BATTERY_INFO_CAPABILITY | 07H | Provides information on each battery supported by the device | | PD_CONSUMER_PORT_CAPABILITY | 08H | The consumer characteristics of a port on the device | | PD_PROVIDER_PORT_CAPABILITY | 09H | The provider characteristics of a port on the device | | SUPERSPEED_PLUS | 0AH | Defines the set of SuperSpeed Plus USB specific device level capabilities | | PRECISION_TIME_MEASUREMENT | 0BH | Precision Time Measurement (PTM) Capability Descriptor | | Wireless_USB_Ext | 0CH | Defines the set of Wireless USB 1.1-specific device level capabilities | | BILLBOARD | 0DH | Billboard capability | | AUTHENTICATION | 0EH | Authentication Capability Descriptor | | BILLBOARD_EX | 0FH | Billboard Ex capability | <https://chromestatus.com/feature/5651917954875392> <https://web.dev/build-for-webusb/> ## internals - about://usb-internals/ - chrome://usb-internals/ (chrome://settings/content/usbDevices) and the navigator.usb.getDevices() only returns allowed devices if they are currently connected. - <https://cloud.google.com/docs/chrome-enterprise/policies/?policy=WebUsbAllowDevicesForUrls> chrome://prefs-internals and search for "usb_chooser_data". - chrome://settings/content/usbDevices on desktop. This will show permissions for devices that are not currently connected.a - chrome://settings/content/usbDevices is available only on Chrome Desktop. On Android, you'll have to navigate through Chrome menu. ### protected classes <https://wicg.github.io/webusb/#has-a-protected-interface-class> Protected interface classes Code Description 0x01 Audio 0x03 HID (Human Interface Device) 0x08 Mass Storage 0x0B Smart Card 0x0E Video 0x10 Audio/Video Devices 0xE0 Wireless Controller ### Supported Browsers <https://developer.mozilla.org/en-US/docs/Web/API/USB> Basically just Chrome and derivatives ### Platform Capability descriptory - <https://wicg.github.io/webusb/#webusb-platform-capability-descriptor> The iLandingPage field, when non-zero, indicates a landing page which the device manufacturer would like the user to visit in order to control their device. The UA MAY suggest the user navigate to this URL when the device is connected. ## file-system-access - <https://web.dev/file-system-access/> - <https://googlechromelabs.github.io/text-editor/>