barrettford/Octoprint-Usb_keyboard

empty device listener configuration

Closed this issue · 6 comments

Hello,

I don't see any keyboard in device listener configuration.
octoprint_usbkeyboard_issue

I didn't use usb keyboard plug-in before
I'm running OctoPrint on Ubuntu 18.04.5 on Intel G4400
USB Keyboard (0.2.6)

env.os.bits: 64
env.os.id: linux
env.os.platform: linux
env.python.pip: 21.0
env.python.version: 3.6.9
env.python.virtualenv: true
octoprint.safe_mode: false
octoprint.version: 1.6.1

I have tried to run code below in Octoprints venv

from evdev import InputDevice, categorize, ecodes, list_devices
from pprint import pprint

devices = [InputDevice(device) for device in list_devices()]
message=""
options = []
for device in devices:
      message += f"  Device {device}\n"
      options.append(str(device)[7:24].replace(",", ""))
      message += f"    Info {device.info}\n"
      message += f"    Physical {device.phys}\n"
print(message)

and this is output


Device device /dev/input/event16, name "HDA Intel PCH HDMI/DP,pcm=10", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event15, name "HDA Intel PCH HDMI/DP,pcm=9", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event14, name "HDA Intel PCH HDMI/DP,pcm=8", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event13, name "HDA Intel PCH HDMI/DP,pcm=7", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event12, name "HDA Intel PCH HDMI/DP,pcm=3", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event11, name "HDA Intel PCH Front Headphone", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event10, name "HDA Intel PCH Line Out", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event9, name "HDA Intel PCH Line", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event8, name "HDA Intel PCH Rear Mic", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event7, name "HDA Intel PCH Front Mic", phys "ALSA"
    Info bus: 0000, vendor 0000, product 0000, version 0000
    Physical ALSA
  Device device /dev/input/event6, name "Live! Cam Chat HD VF0790: Live!", phys "usb-0000:00:14.0-4.4/button"
    Info bus: 0003, vendor 041e, product 4097, version 1000
    Physical usb-0000:00:14.0-4.4/button
  Device device /dev/input/event5, name "Video Bus", phys "LNXVIDEO/video/input0"
    Info bus: 0019, vendor 0000, product 0006, version 0000
    Physical LNXVIDEO/video/input0
  Device device /dev/input/event4, name "USB USB Keyboard", phys "usb-0000:00:14.0-1/input1"
    Info bus: 0003, vendor 1a2c, product 0c23, version 0110
    Physical usb-0000:00:14.0-1/input1
  Device device /dev/input/event3, name "USB USB Keyboard", phys "usb-0000:00:14.0-1/input0"
    Info bus: 0003, vendor 1a2c, product 0c23, version 0110
    Physical usb-0000:00:14.0-1/input0
  Device device /dev/input/event2, name "Power Button", phys "LNXPWRBN/button/input0"
    Info bus: 0019, vendor 0000, product 0001, version 0000
    Physical LNXPWRBN/button/input0
  Device device /dev/input/event1, name "Power Button", phys "PNP0C0C/button/input0"
    Info bus: 0019, vendor 0000, product 0001, version 0000
    Physical PNP0C0C/button/input0
  Device device /dev/input/event0, name "Sleep Button", phys "PNP0C0E/button/input0"
    Info bus: 0019, vendor 0000, product 0003, version 0000
    Physical PNP0C0E/button/input0

Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event1')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event2')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event3')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event4')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event5')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event6')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event7')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event8')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event9')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event10')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event11')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event12')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event13')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/async
```io/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event14')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event15')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event16')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules
Exception ignored in: <bound method InputDevice.__del__ of InputDevice('/dev/input/event0')>
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 160, in __del__
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/device.py", line 305, in close
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/evdev/eventio_async.py", line 55, in close
  File "/usr/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
  File "/usr/lib/python3.6/asyncio/events.py", line 669, in get_event_loop_policy
  File "/usr/lib/python3.6/asyncio/events.py", line 662, in _init_event_loop_policy
ModuleNotFoundError: import of asyncio halted; None in sys.modules

Any ideas ?
And yes, i have tried rebooting ;)

Can you run "pip3 list | grep asyncio" for me? What does it output?

$pip3 list | grep asyncio
asyncio                       3.4.3

EDIT

Ok i found where octoprint have logs ;P

log part after octoprint restart

2021-06-28 10:02:24,968 - octoprint.plugins.usb_keyboard - INFO - USB Keyboard loading
2021-06-28 10:02:24,972 - octoprint.plugin - ERROR - Error while calling plugin usb_keyboard
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint/plugin/__init__.py", line 271, in call_plugin
    result = getattr(plugin, method)(*args, **kwargs)
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint/util/__init__.py", line 1941, in wrapper
    return f(*args, **kwargs)
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 444, in on_after_startup
    self.load_settings()
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 434, in load_settings
    self._profiles = self.load_profiles()
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 422, in load_profiles
    profiles[profile["key"]] = self.load_profile_from_data_folder(profile["value"])
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 562, in load_profile_from_data_folder
    profile_json_filename = os.path.join(profiles_folder, profile_filename)
  File "/home/main/OctoPrint/venv/lib/python3.6/posixpath.py", line 94, in join
    genericpath._check_arg_types('join', a, *p)
  File "/home/main/OctoPrint/venv/lib/python3.6/genericpath.py", line 149, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'dict'
2021-06-28 10:02:25,057 - octoprint.server.preemptive_cache - INFO - Preemptively caching / (ui _default) for {'base_url': 'http://printer3d.home:5000/', 'path': '/', 'query_string': 'l10n=en'}
2021-06-28 10:02:25,139 - octoprint.server.util.sockjs - INFO - User main logged in on the socket from client 172.16.16.1
2021-06-28 10:02:26,992 - octoprint.server.preemptive_cache - INFO - ... done in 1.94s
2021-06-28 10:02:26,992 - octoprint.server.preemptive_cache - INFO - Preemptively caching / (ui _default) for {'base_url': 'http://printer3d.<redacted>.com/', 'path': '/', 'query_string': 'l10n=en'}
2021-06-28 10:02:27,064 - octoprint.server.preemptive_cache - INFO - ... done in 0.07s
2021-06-28 10:02:33,058 - octoprint.server.util.flask - INFO - Passively logging in user main from 172.16.16.1
2021-06-28 10:02:33,058 - octoprint.access.users - INFO - Logged in user: main
2021-06-28 10:02:33,721 - octoprint.server.util.flask - INFO - Passively logging in user main from 172.16.16.1
2021-06-28 10:02:33,721 - octoprint.access.users - INFO - Logged in user: main
2021-06-28 10:02:33,815 - octoprint.server.util.sockjs - INFO - Client connection closed: 172.16.16.1
2021-06-28 10:02:34,166 - octoprint.server.util.sockjs - INFO - New connection from client: 172.16.16.1
2021-06-28 10:02:34,235 - octoprint.server.util.flask - INFO - Passively logging in user main from 172.16.16.1
2021-06-28 10:02:34,235 - octoprint.access.users - INFO - Logged in user: main
2021-06-28 10:02:36,661 - octoprint.server.util.sockjs - INFO - User main logged in on the socket from client 172.16.16.1

part after going into usb keyboard settings

2021-06-28 10:02:48,857 - octoprint.server.api - ERROR - Error while executing SimpleApiPlugin usb_keyboard
Traceback (most recent call last):
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint/server/api/__init__.py", line 158, in pluginCommand
    response = api_plugin.on_api_command(command, data)
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint/util/__init__.py", line 1941, in wrapper
    return f(*args, **kwargs)
  File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 870, in on_api_command
    data["message"], data["options"] = self.listener.get_device_info()
AttributeError: 'Usb_keyboardPlugin' object has no attribute 'listener'

AttributeError: 'Usb_keyboardPlugin' object has no attribute 'listener' Is a red-herring. There's no listener set up because it failed to start the evdev listener at initialization. According to that first stack trace:
File "/home/main/OctoPrint/venv/lib/python3.6/site-packages/octoprint_usb_keyboard/__init__.py", line 562, in load_profile_from_data_folder profile_json_filename = os.path.join(profiles_folder, profile_filename)

It's having issues finding the actual profile file on startup... This is preventing the evdev listener from even being started.
So, the real issue is, is whatever happened to your config file? TypeError: join() argument must be str or bytes, not 'dict' implies that we're trying to join a dict to a string instead of a string/string and I'm curious as to how that happened.

Can you give me the contents of "/home/<user running octoprint>/.octoprint/data/usb_keyboard/profiles" and the usb_keyboard section of your config.yml found in "/home/<user running octoprint>/.octoprint/config.yml" ?

looks like i don't have any profiles

ls -l /home/main/.octoprint/data/usb_keyboard/profiles/
total 0

config.yaml (not yml)

 usb_keyboard:
    _config_version: 2

EDIT:
Well I AGAIN for third time reinstalled plug-in with data clean and now it's working :‑0
No idea why it's working now.
From what i recall between reinstalls i have only added evdev and asyncio in octoprints venv via pip3

Then I don't know what was going wrong for you... If you had no profiles, it should not have attempted to load anything and should have been able to start up just fine.

OK, so i'm closing issue.