# lanusb **Repository Path**: alaker/lanusb ## Basic Information - **Project Name**: lanusb - **Description**: 局域网usb共享功能,自由挂载其他设备鼠标键盘U盘等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LanUSB 局域网 USB 设备共享(类 VirtualHere),基于标准 **USB/IP** 协议。 支持 **Linux / Windows** 双向 Server 与 Client。管理端自研;内核驱动复用现有开源组件。 ## 架构 ``` 物理 USB ──► 平台 Stub/usbip-host ──► USB/IP :3240 ──► 对端 VHCI ──► 本地应用 ▲ └── lanusd (API :3241 / Web UI / UDP 发现 :3242 / 口令 / ACL) ``` | 平台角色 | 底层依赖 | |---------|---------| | Linux Server | `usbip-host` + `usbipd` | | Linux Client | `vhci-hcd` + `usbip` | | Windows Client | [usbip-win2](https://github.com/vadimgrn/usbip-win2) | | Windows Server | [usbip-win](https://github.com/cezanne/usbip-win) stub | ## 一键使用(推荐) 根目录脚本(Windows 双击 `.bat`,Linux 执行 `.sh`): | 角色 | Windows | Linux | |------|---------|-------| | 服务端(推荐) | 双击 `bin\lanusd.exe`(会弹 UAC)或 `start-usbip-server.bat` | `./start-usbip-server.sh` | | 客户端 | 双击 `bin\lanusb-gui.exe` / `bin\lanusd.exe`(服务端已含挂载)或 `start-usbip-client.bat` | `./start-usbip-client.sh` | 把 `bin/` 与 `drivers/` 保持在工程根目录旁: ``` LanUSB/ start-usbip-client.bat / .sh start-usbip-server.bat / .sh build.bat / build.sh bin/... drivers/ linux/amd64|arm64|arm32/usbip+usbipd usbip-win/ ... usbip-win2/ ... ``` 程序会自动:查找驱动 → 加载模块/尝试安装 → 启动服务 → 打开管理页。 驱动目录说明见 [drivers/README.md](drivers/README.md)。 ### 编译 依赖 **Go 1.22+**(未安装先下载):https://go.dev/dl/ 安装后确认 `go version` 可用,再在仓库 `lanusb/` 目录下操作。 ```bash # 一键编译(推荐) # Windows 双击 build.bat # Linux / macOS:./build.sh make build-all # 同上一键:Win amd64 + Linux amd64/arm64/arm32 → bin/ # Windows 无 make 时也可: # .\scripts\build-all.ps1 make build # 仅本机三件套 make test ``` `make build-all` 产物: | 文件 | 平台 | |------|------| | `lanusb.exe` / `lanusd.exe` / `lanusb-gui.exe` | Windows amd64 | | `lanusb-linux-amd64` / `lanusd-linux-amd64` | Linux amd64 | | `lanusb-linux-arm64` / `lanusd-linux-arm64` | Linux arm64 | | `lanusb-linux-arm32` / `lanusd-linux-arm32` | Linux armv7 | 没有 `make` 时,本机直接 `go build`: ```powershell # Windows go build -o bin\lanusb.exe .\cmd\lanusb go build -o bin\lanusd.exe .\cmd\lanusd go build -o bin\lanusb-gui.exe .\gui ``` ```bash # Linux / macOS go build -o bin/lanusb ./cmd/lanusb go build -o bin/lanusd ./cmd/lanusd go build -o bin/lanusb-gui ./gui ``` ### 打包(分发用) 编译完成后,在 Windows 上一键生成发布目录: ```powershell .\scripts\pack-release.ps1 # → dist\LanUSB\ ``` 完整说明(目录结构、systemd、Wails 等)见 [打包](docs/packaging.md)。 ## CLI | 命令 | 说明 | |------|------| | `lanusb list` | 本机 USB | | `lanusb share/unshare ` | 共享/取消 | | `lanusb discover` | 局域网 UDP 发现 | | `lanusb remote ` | 远端设备列表(USB/IP DEVLIST) | | `lanusb attach/detach` | 挂载/卸载 | | `lanusb attached` | 已挂载列表 | | `lanusb deps` | 依赖检查 | | `lanusb config` | 配置 | | `lanusd` | 服务端(API + Web UI + 发现) | | `lanusb-gui` | 打开本机 Web 管理界面 | ## 配置 路径:程序目录下的 `lanusb_cfg.json`(与 `bin/`、`drivers/` 同级)。不存在时首次启动会自动生成默认配置。 ```json { "listen_addr": "0.0.0.0", "usbip_port": 3240, "api_port": 3241, "password": "", "deny_vid_pids": [], "auto_share_default": false, "auto_share": [], "auto_attach": [], "server_name": "", "usbip_win_dir": "", "usbip_win2_dir": "" } ``` | 字段 | 说明 | |------|------| | `listen_addr` | 服务监听地址 | | `usbip_port` | USB/IP 端口,默认 `3240` | | `api_port` | 管理 API / Web UI 端口,默认 `3241` | | `password` | API 口令;空表示不校验 | | `deny_vid_pids` | 禁止共享的 `vid:pid` 黑名单;列表中的设备不能手动或自动共享 | | `auto_share_default` | `true` 时,所有不在黑名单的设备接入后自动共享 | | `auto_share` | 按 **vid:pid** 自动共享的本机设备列表,如 `["046d:c52b"]`(换口/重启后仍匹配同一型号设备)。`auto_share_default` 为 `true` 时此列表可忽略 | | `auto_attach` | 按 **host + vid:pid** 自动挂载的远端设备列表 | | `server_name` | 局域网发现显示名;空表示使用本机主机名 | | `usbip_win_dir` / `usbip_win2_dir` | Windows 上 usbip 工具目录 | `auto_attach` 每一项: ```json { "host": "192.168.1.10", "port": 3240, "vid_pid": "046d:c52b" } ``` 也可在 Web UI「本机设备」标题旁点「默认自动共享」,或在单个设备旁点「自动共享」;远端/已挂载旁点「自动挂载」写入 `auto_attach`。旧配置里若仍是 bus id,会继续兼容,再次点击自动开关后会改存为 vid:pid。 ## 文档 - [Linux](docs/linux.md) - [Windows](docs/windows.md) - [Windows 开启 TESTSIGNING(图文)](docs/windows-testsigning.md) - [安全](docs/security.md) - [打包](docs/packaging.md) ## 范围说明 - Linux 服务端在无内核 USB/IP 模块时自动使用 **usbfs 用户态共享**(类似 VirtualHere),只需 `/dev/bus/usb`。 - Windows 客户端仍通过标准 USB/IP(usbip-win2)连接。 - 不自研/不签名 Windows 内核驱动。 - 等时传输类音视频设备为尽力支持。 - 面向局域网;公网请自行加固。