To permanently change the adapter device name using a bluez tool we have to use DBus to set the name using org.bluez.Adaptor.SetProperty which is handled by set_name(), which results in a call to adapter_set_name() which in turn calls write_local_name().
dbus-send --print-reply --system --dest=org.bluez /org/bluez/$(pidof bluetoothd)/hci0 org.bluez.Adapter.SetProperty string:'Name' variant:string:'adapter_name' $ dbus-send --print-reply --system --dest=org.bluez /org/bluez/$(pidof bluetoothd)/hci0 org.bluez.Adapter.SetProperty string:'Name' variant:string:'adapter_name' method return sender=:1.164 -> dest=:1.189 reply_serial=2 $ cat /var/lib/bluetooth/00\:1F\:E1\:E0\:EB\:96/config name adapter_name pairable yes class 0x6e0100 onmode discoverable mode discoverable 'bluetoothd' reads "/etc/bluetooth/main.conf" where we have "Name = %h-%d" which should be expanded to "<host>-<adapter_id>". This is passed to the 'adaptername' plugin function adaptername_probe() which calls read_pretty_host_name(). This function looks for a systemd- specific text file "/etc/machine-info" and if found reads the file then looks for a line with the prefix "PRETTY_HOSTNAME=" and uses the name assigned there. If no name has been set at this point read_local_name() is called to get the name from "/var/lib/bluetooth/$MAC/config". If no name is obtained from that file expand_name(,,"%h-%d",) is called and a name created from the machine hostname and bluetooth adapter id, e.g. "hostname-0". This is later written out to "/var/lib/bluetooth/$MAC/config". It appears to me that "ubuntu-0" is created during installation from a liveISO environment where the default machine name is always "ubuntu". Bluetooth starts in the live environment and assigns the "ubuntu-0" name to the adapter. Later, when bluetoothd is installed in the target the configuration file is probably copied over, or otherwise generated based on the live environment. Once there is a name entry in "/var/lib/bluetooth/$MAC/config" the bluetoothd adaptername plugin will not generate a new name. ---- debug with "name adapter_name" setting in /var/lib/bluetooth/$MAC/config ---- bluetoothd[11119]: src/main.c:parse_config() name=%h-%d bluetoothd[11119]: src/plugin.c:add_plugin() Loading adaptername plugin bluetoothd[11119]: plugins/hciops.c:read_local_name_complete() hci0 status 0 bluetoothd[11119]: plugins/hciops.c:read_local_name_complete() Got name for hci0 bluetoothd[11119]: plugins/adaptername.c:adaptername_probe() Setting name 'adapter_name' for device 'hci0' bluetoothd[11119]: plugins/hciops.c:hciops_set_name() hci0, name adapter_name -- debug with no "name" setting in /var/lib/bluetooth/$MAC/config ---- bluetoothd[11425]: src/main.c:parse_config() name=%h-%d bluetoothd[11425]: src/plugin.c:add_plugin() Loading adaptername plugin bluetoothd[11425]: plugins/hciops.c:read_local_name_complete() hci0 status 0 bluetoothd[11425]: plugins/hciops.c:read_local_name_complete() Got name for hci0 bluetoothd[11425]: plugins/adaptername.c:adaptername_probe() Setting name 'XPSm1530-0' for device 'hci0' bluetoothd[11425]: plugins/hciops.c:hciops_set_name() hci0, name XPSm1530-0 -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/989817 Title: Cannot change bluetooth device name To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/989817/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
