Hi, On 2025-09-30 at 14:13 -0400, Dave Mielke <[email protected]> wrote: > [quoted lines by Aura Kelloniemi on 2025/09/29 at 23:02 +0300]
> >1) It still reports "no screen". > No one else is having this problem. There's clearly something unique about > your system and/or your brltty installation. Perhaps my explanation has been unclear. Let me try again: BRLTTY is unable to access console on my system, because /dev/tty0 is accessible only by the root user, its mode is 0600 and ownership root:tty. I'm running kernel 6.16.9-arch1-1 and there are no udev rules which affect permissions of my /dev/tty0, so it seems these permissions are the kernel default. If brltty is not running at root, there is no chance that it could access /dev/tty0. This is confirmed by the debug log that I sent attached to my first message in this thread. I will reattach the same log into this message. > >2) Every time I connect my braille display using USB, it starts a > > new BRLTTY instance. I cannot use BrlAPI applications with this > > instance. > Yes. Since the udev mechanism can start several instances, and since they > can't all serve the same brlapi port, this would need special > configuration. This is a separate topic I hopefully have time to return to shortly in a new thread. > >Also I wonder whether there is a better way to give BRLTTY accewss to > >devices > >than changing the permissions of the device node. Changes to device > >permissions will last even if BRLTTY is stopped. In case system user IDs > >change (e.g. due to package removals/installs) it may be that some process > >unintentionally gains access to some devices. > I'm open to ideas. Also, just to be sure that no one misunderstands, the > actual node permissions aren't changed. ACLs are added that grant access > specifically to the brltty user. Would this work? 1) Start BRLTTY as root. 2) unshare. Detach from the common mounts namespace. 3) Mount private tmpfs. Only BRLTTY process has access to this file system. 4) Create necessary device nodes in this private file system. Not all device nodes need to be created, only those for which cannot be accessed from /dev directly. 5) Switch user to brltty and drop all privileges. 6) Once BRLTTY exits or is killed, the mount namespace becomes empty and the tmpfs is cleaned up. -- Aura
brltty: brltty: Console Encoding: UTF-8 program exit event added: log BRLTTY 6.8 rev BRLTTY-6.8-11-g5c386968+ [https://brltty.app/] brltty: lock descriptor allocated: queue-discarded-elements brltty: Log File: <system> brltty: Log Level: debug,debug brltty: Messages Locale: C.UTF-8 brltty: Messages Domain: brltty brltty: Messages Directory: /usr/share/locale brltty: Autospeak Threshold: none brltty: Privilege Parameter: path= brltty: Privilege Parameter: scfmode= brltty: Privilege Parameter: shell= brltty: Privilege Parameter: user= brltty: capabilities: initial: cap_sys_admin,cap_sys_tty_config,cap_mknod=eip brltty: environment variable set: PATH: /bin:/usr/bin brltty: environment variable set: SHELL: /bin/sh brltty: temporary capability already added: cap_sys_admin (for isolating namespaces) brltty: isolating namespace: cgroup (control groups) brltty: isolating namespace: mount (mount points) brltty: isolating namespace: UTS (host name and NIS domain name) brltty: executing as the invoking user: brltty brltty: not claiming state directories brltty: capability not permitted: cap_sys_module brltty: temporary capability not granted: cap_sys_module (for installing kernel modules) brltty: checking group owner of path: /dev/vcs1 brltty: checking group owner of path: /dev/tty1 brltty: checking group owner of path: /dev/ttyS0 brltty: checking group owner of path: /dev/bus/usb brltty: checking group owner of path: /dev/snd/seq brltty: checking group owner of path: /dev/input/mice brltty: checking group owner of path: /dev/uinput brltty: path not group readable: /dev/uinput brltty: path not group writable: /dev/uinput brltty: checking group owner of path: /etc/brlapi.key brltty: capabilities: temporary: cap_sys_admin,cap_sys_tty_config,cap_mknod=eip brltty: checking group owner of path: /dev/vcs1 brltty: checking group owner of path: /dev/tty1 brltty: checking group owner of path: /dev/ttyS0 brltty: checking group owner of path: /dev/bus/usb brltty: checking group owner of path: /dev/snd/seq brltty: checking group owner of path: /dev/input/mice brltty: checking group owner of path: /dev/uinput brltty: checking group owner of path: /etc/brlapi.key brltty: capabilities: permanent: cap_sys_admin,cap_sys_tty_config,cap_mknod=ep brltty: pushed command environment: initial brltty: report listener registered: 0: handleUpdateBrailleDeviceOnline brltty: lock descriptor allocated: umask brltty: program exit event added: pid-file brltty: program exit event added: screen-data brltty: Working Directory: / brltty: Configuration File: /etc/brltty.conf brltty: Tables Directory: /usr/share/brltty brltty: Drivers Directory: /usr/lib/brltty brltty: Helpers Directory: /usr/libexec/brltty brltty: Writable Directory: /run/brltty brltty: Updatable Directory: /var/lib/brltty brltty: Preferences File: /var/lib/brltty/brltty.prefs brltty: loading preferences file: /var/lib/brltty/brltty.prefs brltty: file opened: /var/lib/brltty/brltty.prefs fd=6 brltty: file opened: /var/lib/brltty/brltty.prefs fd=6 brltty: program exit event added: tunes brltty: tune thread state change: 0 -> 1 brltty: tune thread state change: 1 -> 3 brltty: regions: text=0.0 status=0.0 brltty: shifts: full=1 half=0 vertical=5 brltty: program exit event added: prompt-patterns brltty: compiling text table: /usr/share/brltty/Text/aura.ttb brltty: file opened: /etc/xdg/brltty/aura.ttb fd=10 brltty: including data file: /usr/share/brltty/Text/aura.ttb brltty: lock descriptor allocated: text-table brltty: Text Table: aura brltty: program exit event added: text-table brltty: lock descriptor allocated: contraction-table brltty: using internal contraction table: none brltty: Contraction Table: none brltty: program exit event added: contraction-table brltty: Attributes Table: left_right brltty: program exit event added: attributes-table brltty: Keyboard Property: type= brltty: Keyboard Property: vendor= brltty: Keyboard Property: product= brltty: program exit event added: keyboard-table brltty: keyboard table changed: off -> off brltty: Keyboard Table: off brltty: program exit event added: gui-keyboard-table brltty: GUI keyboard table changed: off -> off brltty: GUI Keyboard Table: off brltty: program exit event added: screen-driver brltty: activity action request: screen-driver: start brltty: activity state change: screen-driver: 4[preparing] brltty: activity state change: screen-driver: 1[prepared] brltty: activity state change: screen-driver: 2[scheduled] brltty: program exit event added: braille-data brltty: program exit event added: braille-driver brltty: activity action request: braille-driver: start brltty: activity state change: braille-driver: 4[preparing] brltty: Braille Display Dimensions: 1 column, 1 row brltty: regions: text=0.1 status=0.0 brltty: shifts: full=1 half=0 vertical=5 brltty: activity state change: braille-driver: 1[prepared] brltty: activity state change: braille-driver: 2[scheduled] brltty: program exit event added: speech-data brltty: program exit event added: speech-driver brltty: activity action request: speech-driver: start brltty: activity state change: speech-driver: 4[preparing] brltty: activity state change: speech-driver: 1[prepared] brltty: activity state change: speech-driver: 2[scheduled] brltty: Speech Input: off brltty: BrlAPI Server: release 0.8.7 brltty: API Parameter: auth=keyfile:/etc/brlapi.key brltty: API Parameter: host= brltty: program exit event added: address-table brltty: program exit event added: api-server brltty: program exit event added: sessions brltty: pushed command environment: main brltty: pushed command handler: unhandled brltty: pushed command handler: miscellaneous brltty: pushed command handler: learn brltty: pushed command handler: speech brltty: lock descriptor allocated: main-clipboard brltty: program exit event added: main-clipboard brltty: pushed command handler: clipboard brltty: pushed command handler: preferences brltty: pushed command handler: toggle brltty: report listener registered: 3: brailleWindowUpdatedListener brltty: pushed command handler: touch brltty: report listener registered: 0: keycodeCommandDataResetListener brltty: pushed command handler: keycodes brltty: report listener registered: 0: inputCommandDataResetListener brltty: pushed command handler: input brltty: pushed command handler: navigation brltty: pushed command handler: override brltty: pushed command handler: screen brltty: pushed command handler: custom brltty: pushed command handler: API brltty: activity state change: screen-driver: 6[starting] brltty: checking for screen driver: lx brltty: initializing screen driver: lx brltty: device directory: /dev brltty: checking screen device: /dev/vcsa brltty: screen device: vcsa brltty: checking console device: /dev/tty0 brltty: console device: tty0 brltty: checking unicode device: /dev/vcsu brltty: unicode device: vcsu brltty: cannot open device: /dev/tty0: Permission denied brltty: cannot contain device files: /run/brltty brltty: main console open error 1: Operation not permitted brltty: screen driver initialization failed: lx brltty: screen driver not found brltty: activity action failed: screen-driver: start brltty: activity state change: screen-driver: 2[scheduled] brltty: activity state change: braille-driver: 6[starting] brltty: checking braille device: bluetooth:D8:B6:73:90:57:B6 brltty: braille device type: Bluetooth brltty: another BrlAPI server is already listening on 0 (file /var/lib/BrlAPI/.0 exists) brltty: error while creating socket 0 brltty: program exit event added: bluetooth-device-queue brltty: checking for braille driver: fs brltty: initializing braille driver: fs -> bluetooth:D8:B6:73:90:57:B6 brltty: device open error: /dev/hidraw0: Permission denied brltty: device open error: /dev/hidraw1: Permission denied brltty: device open error: /dev/hidraw2: Permission denied brltty: device open error: /dev/hidraw3: Permission denied brltty: device open error: /dev/hidraw4: Permission denied brltty: device open error: /dev/hidraw5: Permission denied brltty: device open error: /dev/hidraw6: Permission denied brltty: device open error: /dev/hidraw7: Permission denied brltty: device open error: /dev/hidraw8: Permission denied brltty: device open error: /dev/hidraw9: Permission denied brltty: device open error: /dev/hidraw10: Permission denied brltty: device open error: /dev/hidraw13: Permission denied brltty: device open error: /dev/hidraw14: Permission denied brltty: device open error: /dev/hidraw11: Permission denied brltty: device open error: /dev/hidraw12: Permission denied brltty: activity state change: speech-driver: 6[starting] brltty: checking for speech driver: no brltty: initializing speech driver: no brltty: Speech Driver: no [NoSpeech] brltty: activity state change: speech-driver: 3[started] brltty: Detected Focus 40: cells=40, firmware=5.82-26 brltty: Manufacturer: FREEDOM SCIENTIFIC brltty: Model: Focus 40 brltty: Firmware: 5.82-26 brltty: Braille Display Dimensions: 40 columns, 1 row brltty: regions: text=0.40 status=0.0 brltty: shifts: full=40 half=20 vertical=5 brltty: Key Bindings: focus40 brltty: program exit event added: sorted-command-table brltty: file opened: /etc/xdg/brltty/focus40.ktb fd=18 brltty: including data file: /usr/share/brltty/Input/fs/focus40.ktb brltty: file opened: /etc/xdg/brltty/focus_blue.kti fd=19 brltty: including data file: /etc/xdg/brltty/focus_blue.kti brltty: program exit event added: sorted-keyboard-functions brltty: Key Table: /usr/share/brltty/Input/fs/focus40.ktb brltty: constructing special screen: help brltty: lock descriptor allocated: braille-driver brltty: braille is online brltty: Braille Driver: fs [FreedomScientific] brltty: Braille Device: bluetooth:D8:B6:73:90:57:B6 brltty: Old Preferences File: /etc/brltty-fs.prefs brltty: report listener registered: 0: brlapi_handleReports brltty: regions: text=0.40 status=0.0 brltty: shifts: full=40 half=20 vertical=5 brltty: setting braille firmness: 0 brltty: activity state change: braille-driver: 3[started] brltty: report listener unregistered: 0: brlapi_handleReports brltty: pushed command environment: message brltty: pushed command handler: message brltty: activity state change: screen-driver: 6[starting] brltty: checking for screen driver: lx brltty: initializing screen driver: lx brltty: checking screen device: /dev/vcsa brltty: screen device: vcsa brltty: checking console device: /dev/tty0 brltty: console device: tty0 brltty: checking unicode device: /dev/vcsu brltty: unicode device: vcsu brltty: cannot open device: /dev/tty0: Permission denied brltty: cannot contain device files: /run/brltty brltty: main console open error 1: Operation not permitted brltty: screen driver initialization failed: lx brltty: screen driver not found brltty: activity action failed: screen-driver: start
_______________________________________________ This message was sent via the BRLTTY mailing list. To post a message, send an e-mail to: [email protected] For general information, go to: http://brltty.app/mailman/listinfo/brltty
