Recebo tempos limite de WiFi com o driver rt2800usb

10

Eu uso o driver rt2800usb (com um dongle USB RT5370) e configurei meu Raspberry Pi como um ponto de acesso WiFi com o hostapd. O problema é que eu recebo intervalos periodicamente (veja o exemplo). Isso não seria um problema se eu não usasse meu RPi como controle remoto para um quadcopter. Parece ser independente de como eu ligo meu RPi e isso acontece com todos os dongles wifi Ralink deste tipo que tenho.

Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64
Zeitüberschreitung der Anforderung.
Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.42.1: Bytes=32 Zeit=1ms TTL=64

saída dmesg:

[ 2606.960813] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 6 in queue 2
[ 2606.960897] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 6 in queue 2
[ 2606.960925] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 6 in queue 2
[ 2606.961001] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 7 in queue 2
[ 2606.961052] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 8 in queue 2
[ 2606.961093] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 9 in queue 2
[ 2606.961133] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 10 in queue 2
[ 2606.961174] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 11 in queue 2
[ 2608.352291] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
[ 2608.352524] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
[ 2608.352766] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
[ 2608.353014] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
[ 2608.353262] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
[ 2608.353511] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping

Eu preparei um pequeno gráfico como ilustração. Eu implementei minha própria função de ping (com tempos variáveis ​​por razões de teste) e vejo a cada ~ 12s um tempo limite (indicado em vermelho por uma pequena lacuna). Acredito que o usuário normal não notará esses tempos limite quando estiver navegando na Internet.

insira a descrição da imagem aqui

dgrat
fonte
Você disse que parece ser independente de como você alimenta o pi. Isso significa que você tentou várias fontes de alimentação diferentes?
precisa saber é o seguinte
Isso significa que tentei ligar diretamente pelo RPi e via USB-Hub. Tudo igual. Parece ser um bug do hostapd (improvável), rt2800usb ou do firmware (rt2870).
precisa
Você já tentou alimentar o pi de maneira diferente?
usar o seguinte código
Sim, o problema não está relacionado à energia. A Ethernet também está funcionando sem problemas.
dgrat

Respostas:

7

Parece ser um problema conhecido. Pelo que descobri, tudo o que podemos fazer é:

# disable power management (may need to be done periodically?)
iwconfig wlan0 power off 

e desative a criptografia hw (para que seja feita no software). Edite ou crie /etc/modprobe.d/rt2800usb.conf:

options rt2800usb nohwcrypt=1

Além disso, não esqueça de atualizar o /lib/firmware/rt2870.bin de acordo com este artigo http://www.raspberrypi.org/forums/viewtopic.php?t=22623 no site MediaTek!

Versões de firmware para sua referência:

md5:36c944c3138125605d28c0a3a1338be9 version 0.29 from Raspian base install
md5:ac4f6d8b679945208a978e397c016aa7 version 0.33 from DPO_RT5572_LinuxSTA_2.6.1.3_20121022 (MediaTek website)

A versão do firmware é impressa na inicialização do dmesg na linha que contém:
rt2x00lib_request_firmware: Info - Firmware detectado - versão:

k3a
fonte
Aviso, ao desativar a criptografia HW, você estressa mais sua CPU.
martinlbb
para o meu D-Link, o firmware 0,33 parece útil. como pode não ser tão fácil encontrar o firmware no lado do MediaTek hoje em dia, também existem outras opções - uma é obter o fw em github.com/afro-gum/DPO_RT5572_LinuxSTA/blob/master/common/…
ciekawy
0

Após atualizar para o kernel mais recente, passei 4 horas sem encontrar quase tantos desses erros. Use rpi-updatepara atualizar seu kernel.

Para referência, meu uname -aé:

Linux boat-pi 3.12.28+ #713 PREEMPT Fri Sep 19 16:43:32 BST 2014 armv6l GNU/Linux

Ainda recebo rt2800usb_entry_txstatus_timeouterros ocasionalmente, mas costumava preencher meu dmesg. Não recebo mais os Got TX status for an empty queueerros.

Atualizar:

Falou muito cedo. Meu pi ficou muito melhor por 7 horas e depois começou a receber uma enxurrada de erros novamente. Não foi possível descobrir o que desencadeia as inundações de erro. Parece que o problema não está confinado ao Raspberry Pi (também no OpenWRT , Fedora , Kernel.org ). Parece que algumas pessoas estão relatando que tudo está normal por um certo período de tempo antes que os erros apareçam.

johnboiles
fonte
0

Atualizei o kernel (do Linux alarmpi 3.12.26-2-ARCH para o Linux alarmpi 3.12.28-2-ARCH) esta manhã e, desde então, tenho meu diário preenchido com

rt2800usb_entry_txstatus_timeout: Aviso - Tempo limite do status TX para a entrada 6 na fila 2

Pode não ser uma correção limpa, mas fazer o downgrade do kernel para sua versão anterior fazia as coisas funcionarem novamente (mais de 7 horas depois)

leon
fonte
0

Estou usando um raspberry b +, linux 3.12.32+, com wipi wifi-dongle. O pi está dentro de um pré-amplificador de áudio, com o dongle wifi conectado do lado de fora através de um cabo usb de extensão (tipo A montado no painel). É fundamental que o aterramento do cabo USB esteja firmemente conectado ao chassi do pré-amplificador. Caso contrário, receberemos exatamente as mensagens de erro, conforme mostrado na pergunta. Não vi nenhuma melhoria nisso com as versões rasbian ou atualizadas mais recentes do rt2870.bin (testada na versão 0.35). Portanto, em alguns ambientes, as mensagens de erro dmesg podem ocorrer devido à poluição do rádio nas proximidades do dispositivo de rádio wifi (os motores geram frequências que podem perturbar os dispositivos de rádio). Tente maximizar a distância entre o rádio e a perturbação e / ou melhorar a blindagem do rádio.

Alexander
fonte