Just upgraded to Rawhide yesterday. Pulseaudio runs, but cannot detect any devices: [adamw@adam pulseaudio (master *%)]$ pulseaudio -vvvvv I: main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted I: main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted ... D: cli-command.c: Checking for existance of '/usr/lib64/pulse-0.9.21/modules/module-udev-detect.so': success I: module-udev-detect.c: Found 0 cards. I: module.c: Loaded "module-udev-detect" (index: #4; argument: ""). (full log will be attached). This obviously renders PA useless and breaks sound. This is confirmed by Thomas Belvin on test list: http://lists.fedoraproject.org/pipermail/test/2010-November/095441.html I had a quick look at upstream changelog and thought perhaps http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=1552abf62820e063e933e54372bec25f8ea2f68a was relevant, so I rebuilt PA with that patch (also needed to take http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=80093c94be077d15fda945786bc1291fb864e51c and add a buildrequires dbus-devel to make it build, BTW) but it didn't change anything (the attached log is actually from my rebuilt PA). This blocks F15 final.
-- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
Created attachment 459244 [details] full log of pulseaudio -vvvvv
lennart thinks this has something to do with udev. here's why: [adamw@adam ~]$ udevadm info -p /sys/class/sound/card0 -qallP: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: SUBSYSTEM=sound that's missing all the stuff that should be added by /lib/udev/rules.d/78-sound-card.rules, and which PA relies on. here's the udevadm test output: [adamw@adam ~]$ udevadm test /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 run_command: calling: test udevadm_test: version 164 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. add_matching_files: unable to open '/dev/.udev/rules.d': Permission denied parse_file: reading '/etc/udev/rules.d/10-blackberry.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-console.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules file parse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules file parse_file: reading '/etc/udev/rules.d/40-hplip.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-libgphoto2.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-multipath.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-usb-media-players.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-compat_firmware.rules' as rules file parse_file: reading '/etc/udev/rules.d/50-euvccam.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file parse_file: reading '/lib/udev/rules.d/55-gcm-i2c.rules' as rules file parse_file: reading '/etc/udev/rules.d/56-hpmud_support.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-floppy.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-fprint-autosuspend.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-libmtp.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-net.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-pcmcia.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-libsane.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules file parse_file: reading '/etc/udev/rules.d/69-blackberry.rules' as rules file parse_file: reading '/lib/udev/rules.d/69-pilot-link.rules' as rules file parse_file: reading '/lib/udev/rules.d/69-xorg-vmmouse.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-cups-libusb.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-printers.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-touchpad-quirks.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-wacom.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-probe_mtd.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-ericsson-mbm.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-longcheer-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-simtech-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-usb-device-blacklist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-zte-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-nm-olpc-mesh.rules' as rules file parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file parse_file: reading '/etc/udev/rules.d/80-kvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-udisks.rules' as rules file parse_file: reading '/etc/udev/rules.d/85-pcscd_ccid.rules' as rules file parse_file: reading '/etc/udev/rules.d/85-pcscd_egate.rules' as rules file add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:3 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:3 add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:5 parse_file: reading '/lib/udev/rules.d/85-regulatory.rules' as rules file parse_file: reading '/lib/udev/rules.d/85-usbmuxd.rules' as rules file parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules:9 parse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules file parse_file: reading '/lib/udev/rules.d/89-microcode.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/90-libgpod.rules' as rules file parse_file: reading '/lib/udev/rules.d/90-pulseaudio.rules' as rules file parse_file: reading '/etc/udev/rules.d/91-drm-modeset.rules' as rules file parse_file: reading '/etc/udev/rules.d/92-video-post.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-gcm-colorimeters.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-gcm-devices.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-dell.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-fujitsu.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-gateway.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-ibm.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-lenovo.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-toshiba.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-csr.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-hid.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-wup.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-fuse.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-gpsd.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-libconcord.rules' as rules file add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/99-libconcord.rules:4 parse_file: reading '/lib/udev/rules.d/99-systemd.rules' as rules file udev_rules_new: rules use 217104 bytes tokens (18092 * 12 bytes), 39953 bytes buffer udev_rules_new: temporary index used 62760 bytes (3138 * 20 bytes) udev_device_new_from_syspath: device 0x13741b0 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0' udev_device_new_from_syspath: device 0x1368a60 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0' udev_device_new_from_syspath: device 0x1368e20 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2' udev_device_new_from_syspath: device 0x133e8a0 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3' udev_device_new_from_syspath: device 0x133ea90 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2' udev_device_new_from_syspath: device 0x1374970 has devpath '/devices/pci0000:00/0000:00:1d.7' udev_device_new_from_syspath: device 0x1374b60 has devpath '/devices/pci0000:00' udevadm_test: UDEV_LOG=6 udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 udevadm_test: ACTION=add udevadm_test: SUBSYSTEM=sound -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
okay, discovered something else: this may be some kind of permissions issue. if I run the udevadm command as root, I get the correct full output: [root@adam rules.d]# udevadm info -p /sys/class/sound/card0 -qall P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: SUBSYSTEM=sound E: SOUND_INITIALIZED=1 E: ID_VENDOR=Rocketfish E: ID_VENDOR_ENC=Rocketfish E: ID_VENDOR_ID=19ff E: ID_MODEL=Rocketfish_2MP_AF_Webcam E: ID_MODEL_ENC=Rocketfish\x202MP\x20AF\x20Webcam E: ID_MODEL_ID=0103 E: ID_REVISION=0100 E: ID_SERIAL=Rocketfish_Rocketfish_2MP_AF_Webcam E: ID_TYPE=audio E: ID_BUS=usb E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200: E: ID_USB_INTERFACE_NUM=02 E: ID_USB_DRIVER=snd-usb-audio E: ID_VENDOR_FROM_DATABASE=Dynex E: ID_IFACE=02 E: ID_ID=usb-Rocketfish_Rocketfish_2MP_AF_Webcam-02-Webcam E: ID_PATH=pci-0000:00:1d.7-usb-0:3:1.2 E: SOUND_FORM_FACTOR=webcam rather than the truncated output I get as a regular user (see above). I can't see any rules files which are un-readable by a regular user; what else should I look for? -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
confirmed that if I run pulseaudio as root, it detects all the devices. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
aha, I think I have it. straceing the udevadm command, I see: lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97e0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97f0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97f0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c93b0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c93a0) = -1 EACCES (Permission denied) indeed: [adamw@adam ~]$ ls -l /dev/.udev/ ls: cannot open directory /dev/.udev/: Permission denied [root@adam adamw]# ls -dl /dev/.udev/ drwxrwx---. 7 root root 160 Nov 10 16:55 /dev/.udev/ so, what sets the permissions on /dev/.udev ? re-assigning to udev, it looks like this bug is there, not PA. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
if I change the permissions on /dev/.udev manually, then I can run pulseaudio as user, it works, and I can play sound. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
I took a look at how udev gets started at the suggestion of the folks in #udev. it's kind of interesting - it *is* different in rawhide, systemd is doing it via three native services - but even if I boot with upstart, which causes it to be done the old way via /etc/rc.sysinit calling /sbin/start_udev , the permissions are still wrong. So I don't think that's it. start_udev has barely changed since f14 afaict, it has a bail-out clause at the start which stops it proceeding if systemd is in use, but that's all. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
It might be a dracut bug. $ grep -r rules.d /usr/share/dracut/modules.d/99base/init mkdir -m 0755 /dev/.udev/rules.d $ lsinitrd /boot/initramfs-$(uname -r).img init | grep rules.d mkdir -m 0755 /dev/.udev/rules.d
$ lsinitrd /boot/initramfs-$(uname -r).img init | fgrep mkdir | fgrep .udev mkdir -m 0755 /dev/.udev mkdir -m 0755 /dev/.udev/rules.d
or just change in /usr/share/dracut/modules.d/99base/init: mkdir -p -m 0755 /dev/.udev/rules.d to mkdir -p -m 0755 /dev/.udev /dev/.udev/rules.d
confirmed fixed with updated dracut (and udev, though I guess that was irrelevant). thanks! -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers