KuriRobot / Kuri-Documentation

Documentation for Kuri the adorable home robot.
MIT License
17 stars 13 forks source link

Deleted Libraries #35

Closed amalnanavati closed 3 years ago

amalnanavati commented 4 years ago

I have attached an HDMI cable to my Kuri, and installed ubuntu_desktop in order to get a GUI. Everything seemed to still be working (for example, I could still run the kuri_edu ROS packages on the Kuri). However, I recently realized that the standard gizmo code no longer runs on startup. It seems to work if I do sudo service gizmo start, but it does not run automatically on startup.

Upon some digging, I found that ubuntu_desktop ended up removing some libraries that are used in Kuri's standard gizmo programs: gizmo_bluez, gizmo-pulseaudio, gst-deps-dev, and gst-webrtc-dev. I think these missing libraries are the core reason why the startup programs no longer work, because upon digging in some of the logs and startup programs I found these errors, which seem to be linked to those missing libraries:

ERROR 1: /var/log/upstart/gizmo.log

Traceback (most recent call last):
  File "/opt/gizmo/lib/gizmo_webrtc/teleop", line 6, in <module>
    import gizmo_webrtc
  File "/opt/gizmo/lib/python2.7/dist-packages/gizmo_webrtc/__init__.py", line 116, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packaTraceback (most recent call last):
  File "/opt/gizmo/lib/gizmo_webrtc/teleop", line 6, in <module>
    import gizmo_webrtc
  File "/opt/gizmo/lib/python2.7/dist-packages/gizmo_webrtc/__init__.py", line 116, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packages/gizmo_webrtc/teleop.py", line 15, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packages/yawl/__init__.py", line 1, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packages/yawl/app.py", line 1, in <module>
ImportError: libgstwebrtcbase-1.0.so.0: cannot open shared object file: No such file or directoryges/gizmo_webrtc/teleop.py", line 15, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packages/yawl/__init__.py", line 1, in <module>
  File "/opt/gizmo/lib/python2.7/dist-packages/yawl/app.py", line 1, in <module>
ImportError: libgstwebrtcbase-1.0.so.0: cannot open shared object file: No such file or directory

ERROR 2: When I run bt_wifi_server:

mayfield@kuriosity:~$ bt_wifi_server
Traceback (most recent call last):
  File "/usr/bin/bt_wifi_server", line 41, in <module>
    bws.main()
  File "/usr/lib/python2.7/dist-packages/bt_wifi/server.py", line 870, in main
  File "/usr/lib/python2.7/dist-packages/bt_wifi/server.py", line 572, in find_adapter
  File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 241, in get_object
    follow_name_owner_changes=follow_name_owner_changes)
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 248, in __init__
    self._named_service = conn.activate_name_owner(bus_name)
  File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 180, in activate_name_owner
    self.start_service_by_name(bus_name)
  File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 278, in start_service_by_name
    'su', (bus_name, flags)))
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.bluez was not provided by any .service files

There are likely more errors that I have not yet found.

I do have access to another working Kuri, and therefore could possibly copy the missing libraries over from that Kuri to the not-working one. Therefore, I was wondering if you could point me to files/folders I should transfer over, and any other changes I should make, in order to restore gizmo_bluez, gizmo-pulseaudio, gst-deps-dev, and gst-webrtc-dev? Thanks!

po1 commented 4 years ago

You can use the dpkg -L command followed by a package name on a system where the package is installed to list the files that are associated with it.

amalnanavati commented 4 years ago

That worked for gst-deps-dev and gst-webrtc-dev, since all the files were in the /opt/gst folder and could easily be moved over.

However, for the two Mayfield libraries, gizmo_bluez and gizmo_pulseaudio, that command gives the locations of a lot of dependency libraries, which I have reinstalled on the Kuri. However, I have not been able to find the location of the gizmo_bluez and gizmo_pulseaudio libraries themselves. Do you happen to know where those could be located?

Also, do you have some idea why the gizmo service would not load on startup, but does load if I run sudo service gizmo start (after startup)?

po1 commented 4 years ago

It is possible that a pre requisite service of gizmo isn’t able to start. That would explain why it only starts when you start it manually.

As for the other packages, I’m afraid there’s likely no easy way to restore things exactly the way they were. You may have to diff the file systems. I would start with /etc

amalnanavati commented 4 years ago

Update: It was too much to find and move over all the libraries that were uninstalled. I decided not to bother, and just to use this Kuri without runnable default software. This is not too big of a problem, since the Kuri does have an HDMI cable attached so I can access it even if it disconnects from wifi (with other Kuri's, I need the default software to be running and to connect to it from the app to reconnect it to wifi).

I will post here if it turns out that the missing gizmo_bluez and gizmo_pulseaudio end up impacting anything other than the default software.

amalnanavati commented 4 years ago

I have been trying to reinstall the gizmo_pulseaudio library from my working Kuri onto the one that it got deleted from. I have moved all the files that dpkg -L gizmo_pulseaudio showed and restored the appropriate permissions. The pulseaudio.conf init file appears to launch succesfully, but then when I (or the gizmo.conf startup file) attempt to roslaunch audio_realtime I get the following errors.

[ERROR] [1585009932.387412782]: pa_context 0x1aeabb0 state=failed
[ERROR] [1585009932.387546713]: pa_context_new() = -1 - "Access denied"
[ERROR] [1585009932.388282578]: mayfield_audio::CreatePulseAudioCapture()=(type=5, code=-1), "Access denied"
[audio_realtime-1] process has died

Do you (or someone who worked on the audio team) have some idea why audio_realtime would be getting these access denied errors?

amalnanavati commented 4 years ago

I wanted to ping this again, as the issue accessing Kuri's microphone continues. Would someone who worked on Kuri's audio be available to describe what motivated the creation of a separate gizmo_pulseaudio library, and if they have any pointers on overcoming the above pulseaudio errors?

Carter90 commented 4 years ago

@amalnanavati I have a working Kuri with me, is there something that would be useful like know what the permissions of a binary/file or getting a transplant or something?

amalnanavati commented 4 years ago

Thanks for offering! We also have access to a working Kuri, and I have copied over all the gizmo_pulseaudio files (as identified by dpkg -L gizmo_pulseaudio on the working Kuri) and restored their permissions. Even after doing so, I get the aforementioned error when launching audio_realtime (or even just when running import pyaudio; p = pyaudio.PyAudio()). Maybe I have to change the permission on something other than the library files (perhaps some socket or device?) but I'm not sure where to begin trying for that.

I think the most useful thing would be hearing about what motivated the creation of gimo_pulseaudio in the first place (i.e. what is unique about Kuri that makes the default pulseaudio not work)? Or hearing from people who might have had issues with using Kuri's microphone, and what worked for them.

(Note that if I used alsaaudio instead of pyaudio as suggested in this file, it is able to record but the output is just static noise.)

Carter90 commented 4 years ago

Yeah I don't know about any of that. yeah the pyaudio library is not on the default kuri install. Are you able to see the microphones under Capture(F4) when running alsamixer? I get "Mic Front, Mic Rear, Mic Center, Mic Woofer, Mic Side, Mic 1 and Playback"

I am unable to run arecord as I think kuri's volume and ROS is running and has it open.

arecord -l 
**** List of CAPTURE Hardware Devices ****
card 0: Audio [2018.05.09 Mayfield Audio], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
amalnanavati commented 4 years ago

Thank you for the help! I do see all the mics you listed on alsamixer, and I see almost the same output as you with arecord except that card 0 has 1/1 subdevices:

arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Audio [2018.05.09 Mayfield Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I will continue looking into it. One thing I noticed is that our working Kuri has a system-wide pulseaudio running at startup (which either the non-working Kuri does not run, or that I killed). When I try to run that command on the non-working Kuri, I get a whole mess of errors and warnings:

mayfield@cococutkuri:~$ sudo -H -u pulse bash -c /usr/bin/pulseaudio --system --daemonize --high-priority --log-target=syslog --disallow-exit --disallow-module-loading=0
[sudo] password for mayfield: 
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-front-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-rear-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf:24] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-dock-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-aux.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-tvtuner.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-fm.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic-line.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-headphone-mic.conf:24] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-headset-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-speaker.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-desktop-speaker.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones-2.conf:23] Name makes no sense in 'General'
W: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
W: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.169" (uid=111 pid=23062 comm="/usr/bin/pulseaudio ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination="org.bluez" (uid=0 pid=624 comm="/usr/sbin/bluetoothd ")

I'll continue debugging, but wanted to post that here in case it helps anyone identify the issue. Thanks for your help!

amalnanavati commented 4 years ago

Thank you for the help! I do see all the mics you listed on alsamixer, and I see almost the same output as you with arecord except that card 0 has 1/1 subdevices:

arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Audio [2018.05.09 Mayfield Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Condor [Condor], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I will continue looking into it. One thing I noticed is that our working Kuri has a system-wide pulseaudio running at startup (which either the non-working Kuri does not run, or that I killed). When I try to run that command on the non-working Kuri, I get a whole mess of errors and warnings:

mayfield@cococutkuri:~$ sudo -H -u pulse bash -c /usr/bin/pulseaudio --system --daemonize --high-priority --log-target=syslog --disallow-exit --disallow-module-loading=0
[sudo] password for mayfield: 
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-front-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-rear-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf:24] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-dock-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-aux.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-tvtuner.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-fm.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic-line.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-headphone-mic.conf:24] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-input-headset-mic.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-speaker.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-desktop-speaker.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf:23] Name makes no sense in 'General'
E: [pulseaudio] alsa-mixer.c: [/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones-2.conf:23] Name makes no sense in 'General'
W: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
W: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.169" (uid=111 pid=23062 comm="/usr/bin/pulseaudio ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination="org.bluez" (uid=0 pid=624 comm="/usr/sbin/bluetoothd ")

I'll continue debugging, but wanted to post that here in case it helps anyone identify the issue. Thanks for your help!

tgroechel commented 3 years ago

@amalnanavati Did you end up fixing this? I just did the same thing and uninstall the audio packages etc. Also do you have the package binaries on hand?

amalnanavati commented 3 years ago

@tgroechel I haven't been able to fix it, and have just not been using the microphone or the bluetooth on that Kuri. If you are able to figure it out, I'd love to hear how you did it :)

Which package binaries would you like? I can look through the files I moved over last year to see what I have. (Re-reading my comment above, it seems like I could not find the actual binaries for gizmo_bluez and gizmo_pulseaudio, but I can look again to see if anything has changed since making that comment. Let me know what would be helpful 😄 )

tgroechel commented 3 years ago

Thanks for the quick reply. Yeah those two would be the binaries if you have them, I'm unsure of where they would live or if they are just referenced/linked/configured incorrectly after an update. Worst case is I can still do a factory reset. I'll do some more digging into audio_realtime as well

Edit: Well I broke too many permissions and will go with the factory reset method :/

amalnanavati commented 3 years ago

Here are the files I copied over (request permissions to access them). The zip has a file "Readme.md" which contains the output of dpkg -L gizmo-pulseaudio. The names of the files/directories should roughly match those in the dpkg output.

Let me know if you end up solving this problem, either through moving the packages back or through a factory reset (or something else)!

tgroechel commented 3 years ago

Thanks for sending the files, I did end up solving it through those re-provisioning instructions :)

amalnanavati commented 3 years ago

That’s useful to know, thanks! I’ll close this issue then, since doing a factory reset seems to be a solution. (If/when I try it on my Kuri, I’ll comment on this issue confirming whether or not it worked.)