go-iwd is a Go D-BUS binding for iNet Wireless Daemon iwd API.
Note
Please keep in mind that project is under active development.
go-iwd requires Go version 1.22 or above.
With Go's module support, go [build|run|test]
automatically fetches the necessary dependencies when you add the import in your code:
import "github.com/shtirlic/go-iwd"
Alternatively, use go get
:
go get -u github.com/shtirlic/go-iwd
func main() {
i, err := iwd.NewIwd()
if err != nil {
panic(err)
}
defer i.Close()
// Get iwd Stations
stations, err := i.Stations()
if err != nil {
panic(err)
}
// Disconnect from network
for _, station := range stations {
station.Disconnect()
}
// Connect to Known Network
for _, station := range stations {
if station.State == iwd.ConnectedState {
return
}
nets, _ := station.GetOrderedNetworks()
for _, net := range nets {
net.Connect()
}
}
// Output iwd Station diagnostic info
fmt.Println(station[0].GetDiagnostics())
}
A number of ready-to-run examples demonstrating various use cases of go-iwd are available in the go-iwd examples dir.
- Minimal dependencies
- Easy API access
- Full API support + Experimental iwd API
- TUI Client
- API Tests
- Adapter
- Daemon
- Device
- KnowNetwork
- Network
- Station
- Station Diagnostic
- WSC
- Access Point
- Adhoc
- Agent
- Device Provisioning
- RadioManager
- RuleManager
- P2P (peer, service)
- Station Debug
- IWD specific error handling
- D-BUS Signals