Как установить TP-LINK TL-WN722N на Ubuntu? [закрыто]

Я новичок в Ubuntu и пытаюсь установить TL-WN722N. Я видел несколько руководств о том, как это сделать, но они, похоже, не прижились ...

Я видел, что он поддерживается ubuntu, я "lsub" его, и он распознает его, но я не могу заставить беспроводную связь работать.

Может ли кто-нибудь помочь мне шаг за шагом, как его установить?

Я использую Ubuntu 14.04 LTS.

Вот одно из руководств, которое я использовал: https://github.com/erickcion/tlwn722n-linux-install

Вот еще один: Как установить драйвер для TP-Link TL-WN722N в Ubuntu 14.04?

Это то, что lsus сообщил:

ernesto@Ernesto:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 046d:c52e Logitech, Inc. 
Bus 001 Device 002: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Это то, что я получил после проверки, загружается ли драйвер автоматически:

ernesto@Ernesto:~$ lsmod | grep ath
ath9k_htc              75131  0 
ath9k_common           25638  1 ath9k_htc
ath9k_hw              446521  2 ath9k_common,ath9k_htc
ath                    29006  3 ath9k_common,ath9k_htc,ath9k_hw
mac80211              652718  1 ath9k_htc
cfg80211              494362  4 ath,ath9k_common,mac80211,ath9k_htc

Чтобы проверить беспроводной интерфейс, это появляется:

ernesto@Ernesto:~$ iwconfig
eth0      no wireless extensions.
lo        no wireless extensions.

Журнал сообщений для wlan:

ernesto@Ernesto:~$ dmesg | grep -e wlan -e ath9k
[   10.648823] usb 1-3: ath9k_htc: Firmware htc_9271.fw requested
[   10.648931] usbcore: registered new interface driver ath9k_htc
[   10.785561] usb 1-3: ath9k_htc: Transferred FW: htc_9271.fw, size: 11233
[   11.783282] ath9k_htc 1-3:1.0: ath9k_htc: Target is unresponsive
[   11.783296] ath9k_htc: Failed to initialize the device
[   11.786525] usb 1-3: ath9k_htc: USB layer deinitialized  
[ 9320.372981] usb 1-2: ath9k_htc: Firmware htc_9271.fw requested
[ 9320.514042] usb 1-2: ath9k_htc: Transferred FW: htc_9271.fw, size: 11233
[ 9321.512915] ath9k_htc 1-2:1.0: ath9k_htc: Target is unresponsive
[ 9321.512929] ath9k_htc: Failed to initialize the device
[ 9321.515984] usb 1-2: ath9k_htc: USB layer deinitialized

последний шаг ничего не сделал:

rfkill list all

Я проверил размер:

ernesto@Ernesto:~$ ls -al /lib/firmware/htc_9271.fw
-rw-r--r-- 1 root root 11233 abr  7 23:03 /lib/firmware/htc_9271.fw

Я переустановил прошивку, перезагрузил и проверил драйвер:

ernesto@Ernesto:~$ dmesg | grep ath9k
[   11.820232] usb 1-2: ath9k_htc: Firmware htc_9271.fw requested
[   11.820469] usbcore: registered new interface driver ath9k_htc
[   12.224275] usb 1-2: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
[   12.462132] ath9k_htc 1-2:1.0: ath9k_htc: HTC initialized with 33 credits
[   12.739299] ath9k_htc 1-2:1.0: ath9k_htc: FW Version: 1.3
1
задан 21 April 2017 в 11:31

9 ответов

Без намного большей информации невозможно предложить решение. После того, как у нас будет больше деталей, я отредактирую этот ответ для добавления решения.

драйвер загружается автоматически, как ожидалось? Проверьте:

lsmod | grep ath

В противном случае попытка загрузить его и видеть, существуют ли какие-либо ошибки или предупреждения на терминале:

sudo modprobe ath9k_htc

, Если это загружается без жалобы, проверьте, чтобы видеть, был ли беспроводной интерфейс, идеально wlan0, создан:

iwconfig

, Если никакой wlan0 создается, посмотрите, имеет ли журнал сообщений какие-либо подсказки:

dmesg | grep -e wlan -e ath9k

Наконец, в некоторых случаях, беспроводной переключатель для внутреннего устройства будет препятствовать тому, чтобы беспроводная связь USB работала. Проверьте, чтобы видеть, останавливает ли переключатель USB:

rfkill list all

интересно, повреждается ли встроенное микропрограммное обеспечение. Я замечаю:

usb 1-3: ath9k_htc: Переданный FW: htc_9271.fw, размер: 11233

Однако в моей системе, размер отличается:

-rw-r--r-- 1 root root 51272 Nov 24 10:42 /lib/firmware/htc_9271.fw

отредактируйте свой вопрос добавить результат:

ls -al /lib/firmware/htc_9271.fw

, Если это не имеет размера 51272, давайте переустановим микропрограммный пакет:

sudo apt-get install --reinstall linux-firmware

Тогда перезагрузка и проверка:

dmesg | grep ath9k

С более подробной информацией, мы продолжим двигаться.

2
ответ дан 21 April 2017 в 11:31

Я сказал бы, что состояние в целом не является запахом кода, пока это сохранило маленьким и хорошо управляемым.

Это означает, что с помощью монад, таких как состояние, ST или произведенные по заказу, или просто имея структуру данных, содержащую данные состояния, которые Вы раздаете к нескольким местам, не являются плохой вещью. (На самом деле монады являются просто помощью в выполнении точно этого!) Однако имеющий состояние, которое идет повсеместно (да, это означает Вас, монаду IO!) неприятный запах.

Довольно ясный пример этого был, когда моя команда работала над нашей записью для ICFP, Программирующего Конкурс 2009 (код доступен в git://git.cynic.net/haskell/icfp-contest-2009). Мы закончили с несколькими различными модульными частями к этому:

  • VM: виртуальная машина, которая запустила программу моделирования
  • Контроллеры: несколько различных наборов стандартных программ, которые читают вывод средства моделирования и генерировали новые исходные данные управления
  • Решение: поколение файла решения на основе вывода контроллеров
  • Visualizers: прогрессировали несколько различных наборов стандартных программ, которые читают обоих входные и выходные порты и генерировали своего рода визуализацию или журнал того, что продолжалось как моделирование,

Каждый из них имеет свое собственное состояние, и они все взаимодействуют различными способами через входные и выходные значения VM. У нас было несколько различных контроллеров и visualizers, каждый из которых имел свой собственный другой вид состояния.

Ключевой пункт здесь был то, что внутренности какого-то конкретного состояния были ограничены своими собственными конкретными модулями, и каждый модуль ничего не знал даже о существовании состояния для других модулей. Какой-то конкретный набор кода с сохранением информации и данных был обычно только несколькими дюжинами строк долго с горсткой элементов данных в состоянии.

Все это было склеено в одной небольшой функции приблизительно дюжины строк, которые не имели никакого доступа к внутренностям ни одного из состояний, и которые просто названный правильными вещами в надлежащем порядке, поскольку она циклично выполнила через моделирование и передала очень ограниченный объем внешней информации к каждому модулю (наряду с предыдущим состоянием модуля, конечно).

Когда состояние используется таким ограниченным способом, и система типов предотвращает Вас от непреднамеренного изменения его, довольно легко обработать. Это - одна из красот Haskell, что это позволяет Вам сделать это.

В одном ответе говорится, "Не используют монады". С моей точки зрения это точно назад. Монады являются управляющей структурой, которая, среди прочего, может помочь Вам минимизировать объем кода, который касается состояния. Если Вы смотрите на одноместные синтаксические анализаторы как на пример, состояние синтаксического анализа (т.е. проанализированный текст, как далеко каждый вошел к нему, любые предупреждения, которые накопились, и т.д.) должен пробежать каждый combinator, используемый в синтаксическом анализаторе. Все же только будет несколько combinators, которые на самом деле управляют состоянием непосредственно; что-либо еще использует одну из этих немногих функций. Это позволяет Вам видеть ясно и в одном месте весь небольшой объем кода, который может изменить состояние и более легко рассуждать о том, как это может быть изменено, снова помогая иметь дело с.

42
ответ дан 1 November 2019 в 07:04

Я знаю то, что продолжается здесь. Проблема не , как установить экранную заставку (это действительно легко и легкая работа настроек блокировщика точно так же, как они, как предполагается, работают) - но что иногда это продолжает загадочно сбрасывать к его позиции по умолчанию (10 минут).

, Как? вот кульминационный пункт. Gnome Mplayer сбрасывает экранную заставку по некоторым причинам на паузе и выходе.

Вот то, как зафиксировать его:

  1. VLC media player
  2. установки открывают предпочтения-> приложения по умолчанию
  3. видеоплеер значения по умолчанию набора: VLC

и Ваша экранная заставка будут оставаться способ, которым Вы хотите, чтобы он был.

0
ответ дан 18 April 2011 в 01:01
  • 1
    Блестящий!Спасибо! Я отредактировал Inherits= для включения списка моих любимых наборов значка, начиная с лучшего сначала. Я заметил, что иногда значок устанавливал doesn' t включают конкретный значок, таким образом, вторичные и третичные наборы, перечисленные, по-видимому, заполняют те разрывы. – Rsync 5 December 2015 в 14:58

Я записал несколько компиляторов в Haskell, и монада состояния является разумным решением многих проблем компилятора. Но Вы хотите сохранить это, краткий обзор---не делает это очевидным, что Вы используете монаду.

Вот пример из Компилятора Haskell Глазго (который я не записал; я просто работаю вокруг нескольких краев), где мы создаем графики потока управления. Вот основные способы сделать графики:

empyGraph    :: Graph
mkLabel      :: Label -> Graph
mkAssignment :: Assignment -> Graph  -- modify a register or memory
mkTransfer   :: ControlTransfer -> Graph   -- any control transfer
(<*>)        :: Graph -> Graph -> Graph

Но поскольку Вы обнаружили, поддержание предоставления уникальных маркировок утомительно в лучшем случае таким образом, мы обеспечиваем эти функции также:

withFreshLabel :: (Label -> Graph) -> Graph
mkIfThenElse :: (Label -> Label -> Graph) -- branch condition
             -> Graph   -- code in the 'then' branch
             -> Graph   -- code in the 'else' branch 
             -> Graph   -- resulting if-then-else construct

Целое Graph вещью является абстрактный тип, и переводчик просто весело создает графики чисто функциональным способом, не будучи знающим, что что-либо одноместное продолжается. Затем когда график наконец создается для превращения его в алгебраический тип данных, от которого мы можем сгенерировать код, мы даем ему предоставление уникальных маркировок, выполняем монаду состояния и вытаскиваем структуру данных.

Монада состояния скрыта внизу; хотя это не выставляется клиенту, определению Graph что-то вроде этого:

type Graph = RealGraph -> [Label] -> (RealGraph, [Label])

или немного более точно

type Graph = RealGraph -> State [Label] RealGraph
  -- a Graph is a monadic function from a successor RealGraph to a new RealGraph

С монадой состояния, скрытой позади слоя абстракции, это не является вонючим вообще!

44
ответ дан 1 November 2019 в 07:04

Вы посмотрели на Атрибутные грамматики (AG)? (Больше информации о Википедии и статье в Читателе Монады)?

С AG можно добавить атрибуты к синтаксическому дереву. Эти атрибуты разделяются в синтезируемых и наследованных атрибутах.

Синтезируемые атрибуты являются вещами, которые Вы генерируете (или синтезируйте) от Вашего синтаксического дерева это могло быть сгенерированным кодом или всеми комментариями, или безотносительно Вашего заинтересованного.

Наследованные атрибуты вводятся к Вашему синтаксическому дереву, это могло быть средой или списком маркировок для использования во время генерации кода.

В Утрехтском университете мы используем Систему Атрибутной грамматики (UUAGC) для записи компиляторов. Это - препроцессор, который генерирует haskell код (.hs файлы) от обеспеченного .ag файлы.


Хотя, если Вы все еще изучаете Haskell, затем возможно, это не время, чтобы начать изучать еще один слой абстракции по этому.

В этом случае Вы могли вручную записать вид кода, который грамматики атрибутов генерируют для Вас, например:

data AbstractSyntax = Literal Int | Block AbstractSyntax
                    | Comment String AbstractSyntax

compile :: AbstractSyntax -> [Label] -> (Code, Comments)
compile (Literal x) _      = (generateCode x, [])
compile (Block ast) (l:ls) = let (code', comments) = compile ast ls
                             in (labelCode l code', comments)
compile (Comment s ast) ls = let (code, comments') = compile ast ls
                             in (code, s : comments')

generateCode :: Int -> Code
labelCode :: Label -> Code -> Code
6
ответ дан 1 November 2019 в 07:04

Ну, не используйте монады. Питание функционального программирования является функциональной чистотой и их повторным использованием. Существует данная статья, которую однажды записал мой преподаватель, и он - один из парней, которые помогли создать Haskell.

Бумагу называют, "Почему функциональное программирование имеет значение", я предполагаю, что Вы прочитываете его. Это - хорошее чтение.

-5
ответ дан 1 November 2019 в 07:04

давайте будем осторожны относительно терминологии здесь. Состояние не по сути плохо; функциональные языки имеют состояние. То, что является "запахом кода", когда Вы желаете, чтобы присвоить значения переменных и изменить их.

Конечно, монада состояния Haskell там для просто, что причина - как с вводом-выводом, она позволяет Вам сделать небезопасные и нефункциональные вещи в ограниченном контексте.

Так, да, это - вероятно, запах кода.

-13
ответ дан 1 November 2019 в 07:04

Еще переместите файлы куда-нибудь и затем установите Ubuntu 14.04.

1
ответ дан 1 November 2019 в 07:04

Я не думаю с помощью Монады состояния, запах кода, когда она раньше моделировала состояние.

, Если Вам нужно к состоянию потока через Ваши функции, можно сделать это явно, беря состояние в качестве аргумента и возвратив его в каждой функции. Монада состояния предлагает хорошую абстракцию: это проводит состояние для Вас и обеспечивает большую полезную функцию для объединения функций, которые требуют состояния. В этом случае использование Монады состояния (или Applicatives) не является запахом кода.

Однако при использовании Монады состояния для эмуляции обязательного стиля программирования, в то время как функциональное решение было бы достаточно, Вы просто делаете вещи сложными.

2
ответ дан 1 November 2019 в 17:04

Другие вопросы по тегам:

Похожие вопросы: