Below is the error encountered when running ‘ros2 launch respeaker_ros2 respeaker.launch.py‘ on a brand new Stretch 3 that has all of the Ubuntu software updates installed.
$ ros2 launch respeaker_ros2 respeaker.launch.py
\[INFO\] \[launch\]: All log files can be found below …
\[INFO\] \[launch\]: Default logging verbosity is set to INFO
\[INFO\] \[launch.user\]: Sound play node will be launched.
\[INFO\] \[respeaker_node-1\]: process started with pid \[3953\]
\[INFO\] \[soundplay_node.py-2\]: process started with pid \[3955\]
\[INFO\] \[speech_to_text-3\]: process started with pid \[3957\]
\[soundplay_node.py-2\] /home/hello-robot/ament_ws/install/sound_play/lib/sound_play/soundplay_node.py:215: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading
\[soundplay_node.py-2\] GObject.threads_init()
\[soundplay_node.py-2\] /home/hello-robot/ament_ws/install/sound_play/lib/sound_play/soundplay_node.py:216: PyGIDeprecationWarning: GObject.MainLoop is deprecated; use GLib.MainLoop instead
\[soundplay_node.py-2\] self.g_loop = threading.Thread(target=GObject.MainLoop().run)
\[respeaker_node-1\] \[INFO\] \[1768086302.367954908\] \[respeaker_node\]: Initializing Respeaker device (takes 10 seconds)
\[soundplay_node.py-2\] \[INFO\] \[1768086302.925731446\] \[sound_play\]: sound_play node is ready to play sound
\[respeaker_node-1\] \[INFO\] \[1768086312.770102533\] \[respeaker_node\]: Respeaker device initialized (Version: 16)
\[respeaker_node-1\] \[INFO\] \[1768086313.059007758\] \[respeaker_node\]: Found 5: ReSpeaker 4 Mic Array (UAC1.0): USB Audio (hw:1,0) (channels: 0)
\[respeaker_node-1\] \[WARN\] \[1768086313.059489217\] \[respeaker_node\]: 0 channel is found for respeaker
\[respeaker_node-1\] \[WARN\] \[1768086313.059912736\] \[respeaker_node\]: You may have to update firmware.
\[respeaker_node-1\] Traceback (most recent call last):
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/respeaker_ros2/respeaker_node”, line 33, in
\[respeaker_node-1\] sys.exit(load_entry_point(‘respeaker-ros2==0.1.0’, ‘console_scripts’, ‘respeaker_node’)())
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/python3.10/site-packages/respeaker_ros2/respeaker_node.py”, line 469, in main
\[respeaker_node-1\] respeaker_node = RespeakerNode()
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/python3.10/site-packages/respeaker_ros2/respeaker_node.py”, line 339, in **init**
\[respeaker_node-1\] self.respeaker_audio = RespeakerAudio(self, suppress_error=suppress_pyaudio_error)
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/python3.10/site-packages/respeaker_ros2/respeaker_node.py”, line 273, in **init**
\[respeaker_node-1\] raise RuntimeError(‘Invalid channels %s. (Available channels are %s)’ % (
\[respeaker_node-1\] RuntimeError: Invalid channels range(0, 0). (Available channels are 0)
\[respeaker_node-1\] Exception ignored in: <function RespeakerAudio.**del** at 0x735089dc88b0>
\[respeaker_node-1\] Traceback (most recent call last):
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/python3.10/site-packages/respeaker_ros2/respeaker_node.py”, line 288, in **del**
\[respeaker_node-1\] self.stop()
\[respeaker_node-1\] File “/home/hello-robot/ament_ws/install/respeaker_ros2/lib/python3.10/site-packages/respeaker_ros2/respeaker_node.py”, line 318, in stop
\[respeaker_node-1\] if self.stream.is_active():
\[respeaker_node-1\] AttributeError: ‘RespeakerAudio’ object has no attribute ‘stream’
\[ERROR\] \[respeaker_node-1\]: process has died \[pid 3953, exit code 1, cmd ‘/home/hello-robot/ament_ws/install/respeaker_ros2/lib/respeaker_ros2/respeaker_node --ros-args’\].
‘sudo apt list | grep respeaker’ returns nothing

