Entropy Key being zapped on boot.

Joshua Newton newton.joshua.x at gmail.com
Mon Oct 8 19:53:22 BST 2012


On 2012-10-08 06:45, Paul Martin wrote:

> Which kernel is in Ubuntu 12.04?

I'm using a backported kernel (this will be the release kernel for 12.10 
or close to it). EK communication / ekeyd detection of the EK also 
failed on the official kernel, which is 3.2.0-something.

localhost ~ [0]# uname -a
Linux localhost 3.5.0-17-generic #26-Ubuntu SMP Thu Oct 4 16:00:30 UTC 
2012 x86_64 x86_64 x86_64 GNU/Linux

> Yes, it was a faulty USB port/motherboard.

All other devices connected to any of the USB buses on the motherboard 
work without fail, and are detected on boot and kernel IPL. So far, this 
includes mice, keyboards, USB flash drives, 2.0 and 3.0 hubs, a webcam, 
an XBox 360 controller, a "USB video adapter" (VGA output), and several 
USB 2.0 and 3.0 flash card readers. And a UPS management port.

(No, they're not all connected right now. I was testing. Servers don't 
need gamepads.)

What's going on reminds me distinctly of using Razer products, which are 
sort of renowned for their abuse of USB buses. (Which is too bad, 
because I really liked typing on the Lycosa keyboard. But when it 
prevents a system from booting when plugged in, and the replacement eats 
itself after a few days? Not so likeable.)


Since posting to the list, I've found the source for an old utility 
called "usbreset.c", which forces something akin to a "replug event". 
This does cause the EK to begin communicating with ekeyd within a few 
seconds.

However. That's a lousy workaround.

http://marc.info/?l=linux-usb&m=121459435621262&w=2 :

/* usbreset -- send a USB port reset to a USB device */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>


int main(int argc, char **argv)
{
	const char *filename;
	int fd;
	int rc;

	if (argc != 2) {
		fprintf(stderr, "Usage: usbreset device-filename\n");
		return 1;
	}
	filename = argv[1];

	fd = open(filename, O_WRONLY);
	if (fd < 0) {
		perror("Error opening output file");
		return 1;
	}

	printf("Resetting USB device %s\n", filename);
	rc = ioctl(fd, USBDEVFS_RESET, 0);
	if (rc < 0) {
		perror("Error in ioctl");
		return 1;
	}
	printf("Reset successful\n");

	close(fd);
	return 0;
}



More information about the EntropyKey-users mailing list