У меня была аналогичная проблема с моим сканером (все в одном Brother MFC-j410) на Ubuntu 14.04 32 бит. Сканер работал только после запуска XSANE во второй раз, а затем только один просмотр или сканирование операции. Я попытался изменить порты USB на usb 2.0 безрезультатно. Моя материнская плата - Asus B85M-k с чипом Intel i3 LGA1150.
Я попробовал виртуальный бокс с предыдущей версией Ubuntu, где сканер всегда работал на другом ПК. Тем не менее, не повезло, что сделало меня очень подозрительным в отношении возможностей usb 3. Принтер также дал мне несколько предупреждений, но напечатал.
после чтения этого порта
USB 3.0 управляется драйвером xhci_hcd в Linux. Когда включен режим предварительной загрузки XHCI, BIOS направит порты USB 3.0 на контроллер USB3 xHCI. Когда он отключен, порты USB 3.0 направляются на порты EHCI (USB 2.0). Формулировка «режим предварительной загрузки» подразумевает, что эта опция влияет только на среду перед загрузкой полной операционной системы (соответствующий текст справки BIOS явно упоминает, что этот параметр используется для поддержки USB3 в MSDOS); однако, похоже, это также может повлиять на среду после загрузки и может привести к подключению портов USB 3.0 к контроллеру USB 2.0 даже после загрузки Linux (так что порты работают со скоростью USB2).
[d5 ] Я вошел в свой BIOS и в расширенных настройках нашел и изменил USB 3.0 с включенным XHCI, чтобы отключиться, и появилась другая настройка для usb 2 (я думаю, это был EHCI) от включенного к отключенному или наоборот, извините, что я не Не помню. Во всяком случае, после перезагрузки в Ubuntu 14.04 32 бит все работало нормально.Вы можете использовать shuf
DESCRIPTION
Write a random permutation of the input lines to standard output.
-i, --input-range=LO-HI
treat each number LO through HI as an input line
-n, --head-count=COUNT
output at most COUNT lines
Пример:
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
Как насчет:
#!/bin/bash
r=$(($RANDOM % 2))
echo $r
Или даже:
r=$(($(od -An -N1 -i /dev/random) % 2))
Или, возможно:
r=$(seq 0 1 | sort -R | head -n 1)
Или более взломанно:
r=$(($(head -128 /dev/urandom | cksum | cut -c1-10) % 2))
А также:
r=$(apg -a 1 -M n -n 1 -m 8 -E 23456789 | cut -c1)
Также как:
r=$((0x$(cut -c1-1 /proc/sys/kernel/random/uuid) % 2))
Этот скрипт не имеет преимуществ по сравнению с существующими ответами. Просто для развлекательных целей ...
Получить один байт из /dev/urandom (хотя вообще отправка произвольных двоичных символов в консоль не рекомендуется ™, потому что это может дать неожиданные / запутывающие результаты):
[ f1]И включите в десятичное число:
head -c 1 /dev/urandom | od -An -t u1
И получите оставшуюся часть его деления на 2:
echo $((`head -c 1 /dev/urandom | od -An -t u1` % 2))