Overdraft

joined 2 years ago
[–] Overdraft@lemmy.ml 5 points 1 week ago (1 children)

I didn't get one, strangely - here's the article:

Denmark’s KFC restaurants shut down amid food safety revelations Michael Barrett Published: 25 Jun, 2025 CET. Updated: Wed 25 Jun 2025 10:21 CET

Denmark’s KFC restaurants shut down amid food safety revelations Illustration photo. KFC is to close its restaurants in Denmark until a new franchise operator is found following reports of poor food safety. Photo by Aleks Dorohovich on Unsplash

The 11 branches of fast food chain KFC in Denmark are to be shut down until further notice while the company looks for a new franchise operator.

Each of the 11 Danish branches of American fast food chain KFC are to close on a temporary basis after broadcaster DR exposed bad food hygiene practices at the restaurants.

The company’s West European head office told DR it was shutting shop in Denmark until a new company is found to take over the franchise. The current franchise owner is Isken ApS, which will not continue.

That comes after DR's Kontant programme spoke with former employees who described how expiry dates on chicken used in the restaurants were extended.

If thawed chicken wasn’t used by its expiry date, new labels were printed and placed on the packaging, the former workers said.

The company reportedly told DR on June 10th that this was a breach of the terms and obligations set out in its franchise agreements.

KFC in Denmark has restaurants in Rødovre, Greve, Tilst, Horsens, Vejle, Herning, two in Odense and three in Copenhagen.

The restaurants also fared poorly in recent inspections by food hygiene authorities.

The Danish Veterinary and Food Administration’s inspection unit visited each of the 11 KFC restaurants across the country in early June, with every restaurant given either a “neutral” or an “unhappy” smiley rating on the agency’s scale for hygiene standards.

None of the KFCs in Denmark received the top rating, which is a “happy” smiley.

In total, the authority issued four unhappy smileys and seven neutral ones following the June 2nd inspections.

The “smiley” rating system has been used by the food authority since 2001 to help consumers gauge hygiene standards at cafés, shops and restaurants.

An inspection report from KFC Odense noted signs of mould-like growth, dust accumulation and cobwebs.

“The fridge used for storing chicken was unclean, with marinade or food residues on surfaces and trays,” the report stated according to DR.

Inspectors at the Amager branch in Copenhagen meanwhile found bags of chicken placed next to the dishwashing area, with temperatures variously measured at 13.1°C, 13.7°C and 14.9°C. The ambient temperature was 24.2°C.

Staff told inspectors that the meat would be discarded immediately, according to the report.

[–] Overdraft@lemmy.ml 13 points 2 weeks ago* (last edited 2 weeks ago) (3 children)

I've been running three of these for about the same length of time - two things surprised me, but both are documented in their manual. First, the working temperature is -9.9℃-60℃/14℉-140℉, so if you plan to use one in an environment colder than ~10℃, the readout will flatline. Second, they use a CR2450 battery, which is a little more difficult to find where I live than a CR2032.

Neither of these are criticisms, just things I wish I had noticed sooner.

[–] Overdraft@lemmy.ml 1 points 2 months ago* (last edited 2 months ago)

Edit: Once you "grab" your input device with python-evdev (dev.grab()), the input will be absorbed until it is un-grabed (dev.ungrab()). If you grab your only keyboard input, you'll be stuck and will need a secondary keyboard to get unstuck.

I have a bad habit of speculating too much, I'm gonna try to stick to just what I did in case I'm remembering some of the why details incorrectly. I'll use the details from my device, anywhere you see "Azeron LTD Azeron Keypad", "16d0", or "1103", you need to replace the values with your device-

Start by finding the info for the input device you want to monitor:

cat /proc/bus/input/devices | more

This should result in a list of input devices with various details, I used the 'Name' to identify mine:

N: Name="Azeron LTD Azeron Keypad"

When you have found the device, save the vendor ID and product ID for the next step:

I: Bus=0003 Vendor=16d0 Product=1103 Version=0111
N: Name="Azeron LTD Azeron Keypad"

Add a udev rule so that you can read the input from the device, and another for python-evdev to create a virtual device. I use link_priority 71 (as seen in the file name). The rule I'm using to let the virtual device be created could be better - this is something you might want to research more for a permanent solution, but this rule can be removed later if you just wanted to test with it:

sudo nano /etc/udev/rules.d/71-azeron-uaccess.rules

Write the file contents:

#Access to read from "Azeron LTD Azeron Keypad"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1103", TAG+="uaccess"

#Access for python-evdev to create a new device
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", MODE="0660"

Restart udev:

sudo udevadm control --reload-rules && sudo udevadm trigger

At this point, you should have access to the device from python-evdev and also be able to create a virtual device with python-evdev. I don't know if it will help, but I figured I can add a bit of my code here:

import evdev, subprocess, re
from evdev import UInput, InputDevice, ecodes
from select import select

virtual_device_name = 'python-mouse-device'
input_mouse = '/dev/input/'
input_keyboard = '/dev/input/'

# These Regex's may need to be updated per-device. These match 
# my Azeron Cyro Mouse and Key Inputs.
input_keyboard_regex = "^.*Azeron_LTD_Azeron_Keypad_2053388B5942.*event-kbd.*"
input_mouse_regex = "^.*Azeron_LTD_Azeron_Keypad_2053388B5942.*event-mouse.*"

# Get the path to the input devices. These are dynamic, and can change on system reboot.
devices_by_id = subprocess.run(["ls", "-l", "/dev/input/by-id"], encoding='utf-8', stdout=subprocess.PIPE)
devices_by_id = devices_by_id.stdout.split('\n')

for device_id in devices_by_id:
    device_match = re.search(input_mouse_regex, device_id)
    if device_match:
        input_mouse = input_mouse + re.search("event[0-9]{1,}", device_match.group()).group()
        
    device_match = re.search(input_keyboard_regex, device_id)
    if device_match:
        input_keyboard = input_keyboard + re.search("event[0-9]{1,}", device_match.group()).group()

if input_mouse == '/dev/input/' or not input_mouse:
    sys.exit("Mouse not found")

if input_keyboard == '/dev/input/' or not input_keyboard:
    sys.exit("Keyboard not found")

#Create the virtual mouse
ui = UInput.from_device(InputDevice(input_mouse), name=virtual_device_name)

try:
	#Define the devices
	devices = map(InputDevice, (input_keyboard, input_mouse))
	devices = {dev.fd: dev for dev in devices}
	#for dev in devices.values(): print(dev)
	
	#Grab the devices to block their native input
	for dev in devices.values(): dev.grab()

	#Read and handle events from the devices and translate it to the virtual device
	r, w, x = select(devices, [], [])
	for fd in r:
		for event in devices[fd].read():
			if event.type == ecodes.EV_MSC and event.code == 4 and event.value == 458767:
				#remap or add a script to perform
			#Add more if / elif as needed for different keys or key combinations

			#If you didn't remap the key, pass the input through as normal
			ui.write(event.type, event.code, event.value)
finally:
	for dev in devices.values(): dev.ungrab()

The code above I run as a service, but my explanation is getting a bit long-winded already, so if any of this ends up being helpful, and you actually do want to run it as a background service, if you need help doing that let me know!

[–] Overdraft@lemmy.ml 2 points 2 months ago (2 children)

Happy to help! For me, python was the way to get everything I wanted, instead of almost what I needed. In my opinion, the python-evdev documentation is really helpful, and should be able to get you most of the way to what you need. For what it's worth, based on my experience with AutoHotKey on Windows, you should be able to recreate anything you had before and more with python.

[–] Overdraft@lemmy.ml 3 points 2 months ago* (last edited 2 months ago) (4 children)

I went on a journey with to do something very similar, I remap keypad buttons to various other inputs using a python script running as a service. My original post is here, and my eventual solution is in the comments. My post has some links to other solutions that I tried, but ultimately I'm happy using a custom python script. That may not fit your need, but maybe it will help a little!

[–] Overdraft@lemmy.ml 62 points 3 months ago (14 children)

The Guardian references an NPR article where they discuss the vulnerability as a phishing attack, so it doesn't seem to be anything interesting after all.

https://www.npr.org/2025/03/25/nx-s1-5339801/pentagon-email-signal-vulnerability

[–] Overdraft@lemmy.ml 10 points 8 months ago (2 children)

We're just air conditioners

[–] Overdraft@lemmy.ml 1 points 11 months ago (1 children)

I'm not familiar with Nobara, but I can at least show how I would install pyUSB for use in Debian:

If you follow the instructions exactly as in the readme, it will error:

$ pip install pyusb
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Instead, I would create a virtual environment (I'm using virtualenv instead of venv)

$ virtualenv unihub_test

Then activate the environment and run the install with pip

$ source ~/unihub_test/bin/activate
(unihub_test) $ pip install pyusb
Collecting pyusb
  Using cached pyusb-1.2.1-py3-none-any.whl.metadata (2.2 kB)
Using cached pyusb-1.2.1-py3-none-any.whl (58 kB)
Installing collected packages: pyusb
Successfully installed pyusb-1.2.1

(unihub_test) $ python3
>>> import usb #this should not error
>>> exit()
(unihub_test) $ deactivate
$ 

Without the actual hub, that's as far as I can go I think - but maybe this will help give you some options and documentation to explore!

[–] Overdraft@lemmy.ml 1 points 11 months ago* (last edited 11 months ago) (3 children)

Geeze, that's extremely frustrating... they really switched up the headaches between v1 and v2. I'm sorry I couldn't be more help! Hopefully you can find a software solution to get it going.

I don't mean to repeat troubleshooting you've already done with the python script, apologies in advance if this is stuff you've already done. If it's erroring immediately, you may want to double check that you have pyUSB in place and UDEV rules to get access to the device if you're not running the script as root.

edit: You may also need to check that your Vendor ID and Product ID match what the script was written for, given that there seem to be some different iterations of Lian Li's hardware just in general.

[–] Overdraft@lemmy.ml 1 points 11 months ago* (last edited 11 months ago) (5 children)

Sorry for the delayed response - I saw what you meant in the v2 manual about the proprietary connector and thought I would just leave it at that, but I had another thought.

It sounds like you do have some access to Windows/L-Connect, have you switched the fan profiles to sync with the MB? This should stick after a shutdown and not need to be re-set, you will lose the ability to create fan curves in L-Connect:

Also, are you connecting the UNI HUB directly to the MB pins, or is it running through a splitter or extender? It looks like the UNI HUB v2 does have a sense pin (the v1 does NOT, that's the reason for the workaround I have to use); some additional extenders and splitters are missing the sense pin, so even though you can control the fan speed from BIOS, you can't see the RPMs in BIOS so it might look like it's not recognized.

[–] Overdraft@lemmy.ml 6 points 11 months ago (7 children)

For the fan speed controll via BIOS, I ran into the same problem where my SL120s didn't show up - this was the solution I finally found https://www.reddit.com/r/lianli/comments/k37m9y/sl120_not_recognized_by_bios_try_this

Get yourself a splitter for the 4 pin fan cables. Disconnect one set of fans from the controller. Connect the unplugged set of fans directly to the splitter. Connect the controller to the splitter. Connect the splitter to the motherboard.

Your bios should now see your fans. You can create custom fans curves and dynamically control the speed of the fans.

It may not solve the problems you're seeing, but it seemed worth sharing.

[–] Overdraft@lemmy.ml 1 points 1 year ago

Success! This is certainly a niche issue, but since it's taken a pretty lengthy amount of research to resolve, I thought I'd add some resources here in case it's helpful to anyone else.

After exploring others' recommendations, I've saved hardware solutions for tinkering in the future and was also not able to find a way to temporarily disable mouse movement through gnome. I finally landed on python-evdev as my solution. With this, you can read input from one or more devices simultaneously, create a virtual input device to write events to on-demand, and (maybe most importantly) retain exclusive access to the original hardware devices to absorb their input. I'll also shout out evsieve which lead me to python-evdev. The python-evdev documentation is quite thorough, and it's quite a custom solution based on your own needs, so I'm not going to go into great detail on my python script - but it's only 27 lines long, nothing major.

Be aware that you may need to write some udev rules to allow access to the physical devices and to allow the virtual device to be created. This was the easiest part for me to find help with, so I'll leave some abridged copy/paste details below:

Find your device Vendor and Product IDs cat /proc/bus/input/devices | more

Write a udev rule (I used priority 71) to allow access to the device: SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", TAG+="uaccess"

Add a very poor udev rule to allow a virtual device to be created by python-evdev (there's probably a much better way to do this): KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", MODE="0660"

 

I'm using Debian 12 from a fresh install (with Wayland). The mouse I'm using is an Azeron Cyro keypad. Azeron does not offer configuration software for Linux, but the device has onboard memory and can be configured via Windows or windows emulator. Importantly, what I'm trying to achieve here is not possible on Windows using Azeron's software.

My goal is to use one of the 16 keypad buttons on the mouse to disable mouse movement while pressed, resuming mouse movement when released. This is how I currently use the mouse in Windows so that I do not have to lift the mouse to reposition it. I'm able to achieve using reWASD on Windows, but they also do not offer a Linux version of their software.

I've tried a few different solutions, but I haven't been able to find something that fits this need, so I'm hoping someone might be able to guide me in a better direction:

  • AntiMicroX - I've tried using the Flatpak, AppImage, and .deb packages. The software works as expected on other devices (for example, an xbox controller), and while my mouse shows up as a device, the button remapping does not work, the thumb stick is not available for calibration, and there seems to be no access to the mouse sensor.
  • Input-Remapper - Very similar results to AntiMicroX, and also, I don't see a way to use Input-Remapper to disable mouse input anyway.
  • Mouseless - While I can generate mouse movement commands through Mouseless, I haven't been able to disable mouse movement from my physical mouse.
  • evdevremapkeys - This has been my most successful tool. With the debugger, I'm able to see my key presses (unless I have the key unmapped on the mouse) and I'm able to remap existing keys with a yaml configuration, but I've still not found a way to disable the mouse input.

I found something that seemed close to what I need in a two year old reddit post which mentions that it's possible with Sway (via man sway-input). I don't understand the proposed solution though and I'm not very familiar with compositors, how to interact with them or how installing one would affect my OS environment...

Does anyone know of a way I might be able to achieve this?

view more: next ›