Pure-userspace iSCSI in Go. Main focus is providing the userspace initiator - it requires no kernel modules, no open-iscsi, no iscsi-initiator-utils. Import the library and talk to iSCSI targets directly from your Go application.
Target components are mainly used for testing and not production grade.
tapeplayer uiscsi-tools Applications
\ /
uiscsi-tape SSC-3 tape driver
/ | \
uiscsi | tapesim-tcmu iSCSI initiator / TCMU tape emulator
| / \
tapesim go-tcmu Tape state machine / TCMU kernel API
| Repo | What it does |
|---|---|
| uiscsi | iSCSI initiator library. Full RFC 7143: login negotiation, CHAP, CmdSN windowing, error recovery (ERL 0/1/2), streaming I/O. Stdlib-only. |
| uiscsi-tape | SSC-3 tape driver over iSCSI. tape.Open gives you a Drive with Read, Write, WriteFilemarks, Rewind, Position, SetBlockSize, SetCompression. |
| tapeplayer | TUI audio player that reads FLAC from iSCSI tape drives. Playlist navigation, LRU data cache, streaming playback on slow drives. |
| uiscsi-tools | CLI tools: uiscsi-ls (target/LUN discovery), uiscsi-tape-dd (tape data transfer). |
| go-tcmu | Go bindings for the Linux TCM Userspace (TCMU) kernel API. Build SCSI target devices in pure Go. |
| tapesim | In-memory SSC-3 tape simulation. Shared tape state machine for testing and emulation. |
| tapesim-tcmu | TCMU tape emulator. Implements all 13 SSC/SPC commands a tape driver issues. Used for kernel-path E2E testing. |
Access iSCSI storage from Go without kernel dependencies. Import uiscsi, dial a target, execute SCSI commands. Works on any platform with TCP -- no kernel iSCSI stack required.
Drive tape over iSCSI. Import uiscsi-tape for a high-level tape API. Supports LTO and DDS drives, variable and fixed block modes, streaming I/O for large transfers.
Build userspace SCSI targets. Import go-tcmu to create SCSI devices backed by Go code. The kernel presents your handler as a real SCSI device accessible over iSCSI, vHost, or any LIO fabric.
Test tape software without hardware. tapesim + tapesim-tcmu create a virtual tape drive visible to the kernel. Write E2E tests that exercise the full iSCSI + SCSI + tape path.
- RFC 7143 (iSCSI)
- SSC-3 (SCSI Stream Commands -- tape)
- SPC-4 (SCSI Primary Commands -- sense data, inquiry)
All repositories are Free Software under the GNU General Public License v3.0.