DBUS: busctl tool

busctl

busctl是什么的?

busctl 可用于自省和监控 D-Bus 总线。

busctl用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
busctl [OPTIONS...] COMMAND ...

Introspect(内省、内观) the D-Bus IPC bus.

Commands:
list List bus names (以列表形式显示bus name)
status [SERVICE] Show bus service, process or bus owner credentials(显示状态)
monitor [SERVICE...] Show bus traffic(监控bus流量)
capture [SERVICE...] Capture bus traffic as pcap(抓包)
tree [SERVICE...] Show object tree of service(以树状形式服务下的object)
introspect SERVICE OBJECT [INTERFACE](查看服务--对象--接口 信息)
call SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]](调用方法)
Call a method
emit OBJECT INTERFACE SIGNAL [SIGNATURE [ARGUMENT...]](发射信号)
Emit a signal
get-property SERVICE OBJECT INTERFACE PROPERTY...(获取属性值)
Get property value
set-property SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT...(设置属性值)
Set property value
help Show this help(显示帮助)

查询所有的bus name

执行命令:busctl list --no-pager --system

注意:–no-pager 参数表示不分页显示,–systemc 参数表示链接到系统bus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
NAME                            PID PROCESS         USER             CONNECTION    UNIT                                  SESSION DESCRIPTION
:1.0 123 dbus-broker-lau root :1.0 dbus-broker.service - -
:1.1 1 systemd root :1.1 init.scope - -
:1.11 573 rauc root :1.11 rauc.service - -
:1.15 622 systemd-timesyn systemd-timesync :1.15 systemd-timesyncd.service - -
:1.19 1042 python3 root :1.19 docker-007b2d3a171bb6c083dc68968a4f6… - -
:1.2 135 udisksd root :1.2 udisks2.service - -
:1.28 1624 coredns root :1.28 docker-30807294999a70b11bed61212f49c… - -
:1.3 287 os-agent root :1.3 haos-agent.service - -
:1.33 1944 pulseaudio root :1.33 docker-f3b5cb4c6d236b78db17af3dcab3b… - -
:1.4 517 systemd-resolve systemd-resolve :1.4 systemd-resolved.service - -
:1.6 532 systemd-logind root :1.6 systemd-logind.service - -
:1.7 533 wpa_supplicant root :1.7 wpa_supplicant.service - -
:1.8 520 NetworkManager root :1.8 NetworkManager.service - -
:1.831 4650 busctl root :1.831 dropbear.service - -
de.pengutronix.rauc 573 rauc root :1.11 rauc.service - -
fi.w1.wpa_supplicant1 533 wpa_supplicant root :1.7 wpa_supplicant.service - -
io.hass.os 287 os-agent root :1.3 haos-agent.service - -
org.bluez - - - (activatable) - - -
org.freedesktop.DBus 1 systemd root - init.scope - -
org.freedesktop.NetworkManager 520 NetworkManager root :1.8 NetworkManager.service - -
org.freedesktop.UDisks2 135 udisksd root :1.2 udisks2.service - -
org.freedesktop.hostname1 - - - (activatable) - - -
org.freedesktop.login1 532 systemd-logind root :1.6 systemd-logind.service - -
org.freedesktop.nm_dispatcher - - - (activatable) - - -
org.freedesktop.nm_priv_helper - - - (activatable) - - -
org.freedesktop.resolve1 517 systemd-resolve systemd-resolve :1.4 systemd-resolved.service - -
org.freedesktop.systemd1 1 systemd root :1.1 init.scope - -
org.freedesktop.timedate1 - - - (activatable) - - -
org.freedesktop.timesync1 622 systemd-timesyn systemd-timesync :1.15 systemd-timesyncd.service - -
org.pulseaudio.Server 1944 pulseaudio root :1.33 docker-f3b5cb4c6d236b78db17af3dcab3b… - -

查询指定bus name的对象信息

执行命令:busctl introspect fi.w1.wpa_supplicant1 /fi/w1/wpa_supplicant1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
NAME                                TYPE      SIGNATURE RESULT/VALUE                            FLAGS
fi.w1.wpa_supplicant1 interface - - -
.CreateInterface method a{sv} o -
.ExpectDisconnect method - - -
.GetInterface method s o -
.RemoveInterface method o - -
.Capabilities property as 6 "ap" "p2p" "pmf" "ft" "sha384" "owe" emits-change
.DebugLevel property s "info" emits-change writable
.DebugShowKeys property b false emits-change writable
.DebugTimestamp property b false emits-change writable
.EapMethods property as 1 "WSC" emits-change
.Interfaces property ao 1 "/fi/w1/wpa_supplicant1/Interfaces/0" emits-change
.InterfaceAdded signal oa{sv} - -
.InterfaceRemoved signal o - -
.PropertiesChanged signal a{sv} - -
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -


查找 org.bluez 对象下的所有接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pi@pi-desktop:~$ busctl introspect org.bluez /org/bluez
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.bluez.AgentManager1 interface - - -
.RegisterAgent method os - -
.RequestDefaultAgent method o - -
.UnregisterAgent method o - -
org.bluez.HealthManager1 interface - - -
.CreateApplication method a{sv} o -
.DestroyApplication method o - -
org.bluez.ProfileManager1 interface - - -
.RegisterProfile method osa{sv} - -
.UnregisterProfile method o - -
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -

查找 org.bluez 服务下的对象:

1
2
3
4
pi@pi-desktop:~$ busctl tree org.bluez
└─ /org
└─ /org/bluez
└─ /org/bluez/hci0

查看接口下的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
pi@pi-desktop:~$ busctl introspect org.bluez /org/bluez/hci0
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.bluez.Adapter1 interface - - -
.GetDiscoveryFilters method - as -
.RemoveDevice method o - -
.SetDiscoveryFilter method a{sv} - -
.StartDiscovery method - - -
.StopDiscovery method - - -
.Address property s "D8:3A:DD:9B:13:9C" emits-change
.AddressType property s "public" emits-change
.Alias property s "pi-desktop" emits-change writable
.Class property u 7077888 emits-change
.Discoverable property b false emits-change writable
.DiscoverableTimeout property u 180 emits-change writable
.Discovering property b false emits-change
.ExperimentalFeatures property as - emits-change
.Manufacturer property q 305 emits-change
.Modalias property s "usb:v1D6Bp0246d0548" emits-change
.Name property s "pi-desktop" emits-change
.Pairable property b false emits-change writable
.PairableTimeout property u 0 emits-change writable
.Powered property b true emits-change writable
.Roles property as 2 "central" "peripheral" emits-change
.UUIDs property as 10 "0000110e-0000-1000-8000-00805f9b34f… emits-change
.Version property y 9 emits-change
org.bluez.BatteryProviderManager1 interface - - -
.RegisterBatteryProvider method o - -
.UnregisterBatteryProvider method o - -
org.bluez.GattManager1 interface - - -
.RegisterApplication method oa{sv} - -
.UnregisterApplication method o - -
org.bluez.LEAdvertisingManager1 interface - - -
.RegisterAdvertisement method oa{sv} - -
.UnregisterAdvertisement method o - -
.ActiveInstances property y 0 emits-change
.SupportedIncludes property as 3 "tx-power" "appearance" "local-name" emits-change
.SupportedInstances property y 5 emits-change
.SupportedSecondaryChannels property as - emits-change
org.bluez.Media1 interface - - -
.RegisterApplication method oa{sv} - -
.RegisterEndpoint method oa{sv} - -
.RegisterPlayer method oa{sv} - -
.UnregisterApplication method o - -
.UnregisterEndpoint method o - -
.UnregisterPlayer method o - -
.SupportedUUIDs property as 2 "0000110a-0000-1000-8000-00805f9b34fb… emits-change
org.bluez.NetworkServer1 interface - - -
.Register method ss - -
.Unregister method s - -
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -

调用方法

1
2
pi@pi-desktop:~$ busctl call org.bluez / org.freedesktop.DBus.ObjectManager GetManagedObjects 
a{oa{sa{sv}}} 2 "/org/bluez" 4 "org.freedesktop.DBus.Introspectable" 0 "org.bluez.AgentManager1" 0 "org.bluez.ProfileManager1" 0 "org.bluez.HealthManager1" 0 "/org/bluez/hci0" 8 "org.freedesktop.DBus.Introspectable" 0 "org.bluez.Adapter1" 16 "Address" s "D8:3A:DD:9B:13:9C" "AddressType" s "public" "Name" s "pi-desktop" "Alias" s "pi-desktop" "Class" u 7077888 "Powered" b true "Discoverable" b false "DiscoverableTimeout" u 180 "Pairable" b false "PairableTimeout" u 0 "Discovering" b false "UUIDs" as 10 "0000110e-0000-1000-8000-00805f9b34fb" "0000110a-0000-1000-8000-00805f9b34fb" "0000111f-0000-1000-8000-00805f9b34fb" "0000110b-0000-1000-8000-00805f9b34fb" "00001200-0000-1000-8000-00805f9b34fb" "0000110c-0000-1000-8000-00805f9b34fb" "00001800-0000-1000-8000-00805f9b34fb" "00001801-0000-1000-8000-00805f9b34fb" "0000180a-0000-1000-8000-00805f9b34fb" "0000111e-0000-1000-8000-00805f9b34fb" "Modalias" s "usb:v1D6Bp0246d0548" "Roles" as 2 "central" "peripheral" "Manufacturer" q 305 "Version" y 9 "org.freedesktop.DBus.Properties" 0 "org.bluez.BatteryProviderManager1" 0 "org.bluez.GattManager1" 0 "org.bluez.Media1" 1 "SupportedUUIDs" as 2 "0000110a-0000-1000-8000-00805f9b34fb" "0000110b-0000-1000-8000-00805f9b34fb" "org.bluez.NetworkServer1" 0 "org.bluez.LEAdvertisingManager1" 3 "ActiveInstances" y 0 "SupportedInstances" y 5 "SupportedIncludes" as 3 "tx-power" "appearance" "local-name"