🤖 AI Summary
To address the challenge of simultaneously ensuring security, portability, and cloud-native upgradability in hardware access for IoT/edge devices, this paper introduces the first WASI-standard extension for hardware interfaces, enabling sandboxed, memory-safe execution of I²C and USB drivers. Methodologically, it integrates device drivers into the WASI ecosystem by designing a standardized hardware abstraction layer, embedding protocol stacks, and implementing a Rust+WASI SDK. It achieves the first WASI-compliant USB stack, incurring ≤8% performance overhead over native APIs. Key contributions include: (1) establishing a cross-platform, secure, and controllable hardware access paradigm; (2) proposing a WASI hardware specification that balances long-term device compatibility with dynamic runtime updates; and (3) empirically demonstrating the feasibility of direct WebAssembly–hardware interaction, while identifying runtime initialization latency as the critical bottleneck in low-latency scenarios.
📝 Abstract
The rapid expansion of Internet of Things (IoT), edge, and embedded devices in the past decade has introduced numerous challenges in terms of security and configuration management. Simultaneously, advances in cloud-native development practices have greatly enhanced the development experience and facilitated quicker updates, thereby enhancing application security. However, applying these advances to IoT, edge, and embedded devices remains a complex task, primarily due to the heterogeneous environments and the need to support devices with extended lifespans. WebAssembly and the WebAssembly System Interface (WASI) has emerged as a promising technology to bridge this gap. As WebAssembly becomes more popular on IoT, edge, and embedded devices, there is a growing demand for hardware interface support in WebAssembly programs. This work presents WASI proposals and proof-of-concept implementations to enable hardware interaction with I2C and USB, which are two commonly used protocols in IoT, directly from WebAssembly applications. This is achieved by running the device drivers within WebAssembly as well. A thorough evaluation of the proof of concepts shows that WASI-USB introduces a minimal overhead of at most 8% compared to native operating system USB APIs. However, the results show that runtime initialization overhead can be significant in low-latency applications.