Linux: Ligando a luz de fundo

Criado em 30 out. 2015  ·  77Comentários  ·  Fonte: raspberrypi/linux

[ 165.533763] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo
[ 167.085803] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo
[ 168.281433] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo
[ 169.628353] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo
[ 169.742678] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo

Linux screenpi 4.1.12-v7+ #824 SMP PREEMPT qua 28 de outubro 16:46:35 GMT 2015 armv7l GNU/Linux

Eu tenho um aplicativo controlando a luz de fundo através do

/sys/class/backlight/rpi_backlight/bl_power

Desligar a gravação de 4 no arquivo parece confiável, mas a energia falha.

Às vezes, posso instigá-lo à vida ecoando mais coisas no arquivo manualmente, mas não é confiável.

       val = level == 0 and "4" or "0"
        if self:getSettings()["backlight"] and (not only or only == "backlight") then
                dirNodeSetValue("/sys/class/backlight","bl_power",val,skipbacklight)
        end
end

function dirNodeSetValue(dir,node,val,skip)
        for entry in lfs.dir(dir) do repeat
                local entrydir = dir.."/"..entry

                if skip and skip[entry] then
                        break
                end
                local entrymode = lfs.attributes(entrydir, "mode")
                log:debug("dirNodeSetValue: ",entrydir," is ", entrymode)
                if entry:match("^%.") or (entrymode ~= "directory") then
                        break
                end

                local fblank = entrydir.."/"..node
                local mode = lfs.attributes(fblank,"mode")
                log:debug("dirNodeSetValue: ",fblank," mode is ", mode)
                if mode == "file" then
                        local fh = io.open(fblank,"w")
                        if fh then
                                log:info("dirNodeSetValue: ",fblank," to ",val)
                                fh:write(val)
                                fh:flush()
                                fh:close()
                        end
                end
                break -- oddness as we are in a double loop
        until true end
end

O código funciona em gpio_backlight para telas fbtft (adafruit28rt).

Todos 77 comentários

Há um bug conhecido com a cola do firmware mudando a luz de fundo do DSI. Uma correção está na fila de patches.

Ok obrigado, vou testar novamente assim que for lançado...

Firmware é empurrado. Por favor, teste depois de executar rpi-update.

@popcornmix one on off cycle, off and back to:-

[   94.898890] rpi-backlight rpi_backlight: Backlight change failed
[   95.883632] rpi-backlight rpi_backlight: Backlight change failed
[   98.683035] rpi-backlight rpi_backlight: Backlight change failed
[  102.183071] rpi-backlight rpi_backlight: Backlight change failed
[  102.465310] rpi-backlight rpi_backlight: Backlight change failed
[  104.654344] rpi-backlight rpi_backlight: Backlight change failed
[  114.677035] rpi-backlight rpi_backlight: Backlight change failed

E se eu deixá-lo um pouco parece alternar novamente às vezes

Você está trocando a luz de fundo em um intervalo rápido. Eu posso ver duas entradas no log que estão separadas por menos de 500ms.

Ligar e desligar a luz de fundo rapidamente atingirá o limite de taxa embutido no firmware.

O problema ainda está presente se o loop do .. until incorpora um atraso de ~ 1 segundo?

@P33M Estou acionando ao pressionar uma tecla (ativando o soft off), deixei a instalação durante a noite e cansei de acionar novamente sem alegria, também estou alternando o apagamento do buffer de quadros? ao mesmo tempo. Mesmo que pule uma configuração que deve ser corrigida após uma pausa e redefinição do temporizador, esse limite de taxa existe por algum motivo real? e como dito, este caminho de código funciona bem para backlights fornecidos via gpio_backlight e fbtft,

Voltarei e gerarei um log de aplicativo e um log de kernel correspondente. Tenho quase certeza de que escrevi apenas uma vez por segundo no arquivo de energia sysfs bl, mas não salvei os logs.

Fil.

Não é necessário configurar o apagamento do buffer de quadro, bem como a energia da luz de fundo - apagar o fb desligará a luz de fundo.

@ P33M ok sim, isso é provavelmente o que está causando a configuração da luz de fundo em rápida sucessão, embora ela realmente deva se recuperar normalmente, pois foi deixada durante a noite e apenas a ativação falhou? não tenho certeza se alternar o apagamento em um buffer de quadro fbtft alterna o bl (e nem todos os monitores têm controle bl), e é por isso que os códigos lá para o apagamento e, claro, apagando a saída HDMI antes de chamar vcgencmd display_power para causar a tela HDMI economia de energia.

Parte do problema é que parece que o lado linux espera que uma mudança de luz de fundo nunca falhe - a função de atualização de luz de fundo pode retornar um valor, mas esse valor é ignorado pela atualização do framebuffer.
cf http://lxr.free-electrons.com/source/drivers/video/backlight/backlight.c#L40
Portanto, existe a possibilidade de que o estado da luz de fundo e o framebuffer em branco/não em branco fiquem fora de sincronia até a próxima vez que a luz de fundo for definida.

Vou pensar um pouco mais sobre isso.

@ P33M algo não cheira bem no meu caso, estou definindo em branco e desligando, depois desbloqueando e ligando, então não deveria importar que a segunda operação tenha falhado, pois seria definido para o mesmo estado por qualquer uma das chamadas ...
Estou fazendo um fechamento aberto completo para cada alternância de arquivo e não mantendo o descritor aberto.

Hum. Isso mesmo - mesmo com o limite, você ainda deve estar vendo a luz de fundo realmente mudar de estado.

Você pode postar o script completo que você usa para que eu possa replicar o comportamento?

@P33M está disponível, mas é uma sobrecarga, pois este é um applet incorporado em uma compilação do squeeze play dos Pi debs em https://github.com/pssc/squeezeplay-dist seu alfa e se você não tiver um Logitech music server você terá que abortar a configuração para se conectar ao servidor pressionando home (q) para alternar o soft power. Provavelmente é melhor se eu tentar documentar meus testes hoje à noite com dmesg e saída de log do aplicativo, não posso testar daqui e posso desativar o controle em branco e/ou luz de fundo será uma opção simples para testar como isso está afetando a interação ....

Em resumo antes da atualização do firmware: -
A luz de fundo desligou e às vezes eu podia voltar à vida depois de inserir vários valores aleatórios no arquivo bl sysfs, possivelmente com várias tentativas disso.
Após a atualização:-
Luz de fundo liga / desliga ok, depois desliga e suga, mas, novamente, às vezes, algumas alternâncias a trariam de volta.

Re desligou ontem à noite não ligava à esquerda por 7 horas tentou ligar novamente de manhã sem alegria

@P33M ok desabilitar o controle de luz de fundo e apenas alternar a luz de fundo no aplicativo funciona, então é algum artefato de definir bl e blaking

@P33M também alterna primeiro a tela em branco, mas não alterna a luz de fundo ...

Eu instalei o squeezeplay e posso ver o problema.

@ P33M oh bom não é apenas eu, por padrão, ele alternará ambos (bl e blanking), deve haver uma opção de menu na configuração avançada SqueezePi para alternar o controle Bl / Blanking também adicionar applet.Linux a informações na configuração de registro para veja o que está acontecendo e sqeezeplay.ui para avisar para reduzir o ruído. Feedback apreciado, pois você provavelmente é o terceiro usuário desse pacote ...

Por alguma razão, pressionar Q (ou aguardar uma ativação da luz de fundo) causa duas gravações na interface da caixa de correio em rápida sucessão. O primeiro sempre tem um valor bl de 0, o segundo é o que a luz de fundo deve ser, e é por isso que o desligamento funciona, mas não o acionamento.

Há uma correção óbvia a ser feita no firmware - não se preocupe em limitar a taxa, a menos que a luz de fundo realmente mude. Isso resolve esse caso específico.

Você pode testar o start.elf neste link? Substitua start.elf em /boot.

https://www.dropbox.com/s/jvyfhqij1vyb9ll/start.elf?dl=0

@P33M ware você ainda está recebendo dois eventos de gravação com uma das duas opções desativadas? e você viu na primeira alternância após a reinicialização para apagar apenas que não desligou? , digamos se os valores iguais para não incomodar com a limitação da taxa me parecessem razoáveis.

@P33M start.elf vai fazer, tem que esperar até cerca de 11 esta véspera como o PI aqui no trabalho não tem uma tela Pi LCD oficial ;-)

@P33M ok parece ser bom com o apagamento e o controle bl ativados, no entanto, ainda vendo a primeira alternância com o apagamento, mas não afetando a luz de fundo. inicial sate estranho em algum lugar?

Se eu redefinir o Pi quando o SqueezePi estiver em execução e a luz de fundo estiver desligada, na próxima inicialização eu recebo um loop infinito de chamadas de luz de fundo para o firmware ou uma chamada para ligar a luz de fundo, mas o framebuffer permanece em branco.

O estado interno do driver e do firmware permanece consistente.

ok, isso é diferente do problema que estou vendo, que é quando eu reinicio o pi, a luz de fundo acende e o console não fica em branco e o squeezepi está ativado (o console em branco bl permanece ativado e eu só tenho o controle de apagamento ativado). Vou tentar replicar isso em casa.

Você pode ver se o que o aplicativo emite, habilitando logging(Settings->Advanced->logging) nas informações do módulo applet.Linux que deve aparecer é syslog.

Você está executando com controle bl e blanking? (Configurações->Avançado->SqueezePi) e sua instância está conectada a um servidor?

Para sua informação, eu só emito bl / blacking contol em eventos de ativação / desativação de soft power, lutando para descobrir como esses loops ocorrem no código, a menos que você não esteja conectado a um servidor e isso esteja causando o loop de alguma forma.

O firmware do @P33M foi corrigido no firmware de atualização de rpi mais recente.

@P33M ainda não conseguiu replicar seu bug e dicas para sua configuração, minha luz de fundo sempre liga na inicialização.

ok Squeezplay joga de lado

mais recente fw/kernel power pi

pssc<strong i="7">@lothlorien</strong>:255~$ ssh testwipi
pi<strong i="8">@testwipi</strong>'s password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Nov 10 22:23:14 2015
pi<strong i="9">@screenpi</strong> ~ $ sudo -s
root<strong i="10">@screenpi</strong>:/home/pi# echo 1 >/sys/class/graphics/fb0/blank 

O console fica em branco, mas o bl permanece ativado
Prod console para que desbloqueie.

root<strong i="15">@screenpi</strong>:/home/pi# echo 1 >/sys/class/graphics/fb0/blank

O console fica em branco e o bl apaga, isso aponta para um problema de estado/conjunto inicial

Eu tenho um problema semelhante de luz de fundo.

@pssc : Você tem um USB-DAC ou Hifiberry Amp conectado? Se sim, o problema ainda existe quando você desconecta o DAC e está usando a saída padrão do ALSA?

@ Snyder1977 Não, nenhum dac conectado e teve problemas de estabilidade inicialmente menos com firmware mais recente via rpi-update, agora tem um pi2 com tela pi lcd sem dac e um Pi-DAC +

Eu vejo o mesmo problema que @pssc após uma inicialização inicial. Se o framebuffer ficar em branco na primeira vez que a luz de fundo permanecer acesa. Depois que o framebuffer é ligado novamente, os espaços em branco subsequentes também desligam a luz de fundo. Portanto, é realmente apenas o primeiro espaço em branco que não passa.
No meu caso específico, estou iniciando automaticamente uma GUI do Kivy no console logo após a inicialização. Como a luz de fundo não desliga na primeira vez que o console fica em branco, o aplicativo Kivy continua a ser exibido. O que eu realmente quero é que a tela fique em branco após 5 minutos. Atualmente a solução para mim é apagar e apagar o framebuffer uma vez durante a inicialização em rc.local. Depois disso, vejo o comportamento esperado. A luz de fundo se apaga após 5 minutos (o aplicativo ainda está ativo) e volta a acender depois que eu toco na tela. @popcornmix : Existe uma maneira de ver o que está acontecendo com a luz de fundo na primeira vez que o console fica em branco?

Ok, eu brinquei com isso um pouco mais esta noite e encontrei uma solução mais fácil. Colocar a seguinte linha em rc.local é suficiente para a tela funcionar na primeira vez também.

echo 0 > /sys/class/graphics/fb0/blank

Então, em vez de desligá-lo e ligá-lo novamente, apenas dizemos que ele está realmente ligado. Isso parece sincronizar o fb e a tela sensível ao toque e o apagamento funciona.

@pssc seu problema foi resolvido? Se sim, por favor, encerre esta questão. Obrigado.

Esse problema parece ter reaparecido na versão mais recente de raspberrypi-bootloader ou em uma de suas dependências. Eu uso um Pi 2B com uma tela v1.0 e escrever para /sys/class/backlight/rpi_backlight/bl_power resulta em rpi-backlight rpi_backlight: Backlight change failed no log do kernel.

O firmware do @P33M foi corrigido no firmware de atualização de rpi mais recente.

Você executou o rpi-update?

Sim, atualizei todos os pacotes e o firmware em uma tentativa anterior, mas ele quebra assim que atualizo raspberrypi-bootloader .

Confirmado: o problema reaparece após a atualização mais recente do firmware

Haverá uma atualização para o pacote saindo hoje, mas o rpi-update também deve corrigir o problema se for executado APÓS a atualização do raspberrypi-bootloader.

Confirmado: o problema reaparece após a atualização mais recente do firmware

Atualizado como?

rpi-update é a vanguarda das atualizações de firmware - o raspberrypi-bootloader ficará um pouco atrás disso.

Eu posso reproduzir isso com a versão mais recente instalada via rpi-update 4.4.35+. apagar a tela funciona, mas reativá-la resulta em

[ 4439.433528] rpi-backlight rpi_backlight: Falha na alteração da luz de fundo

Isso não acontece logo após a reinicialização, mas após a execução por algumas horas. Para fins de teste, reverti para 4.4.32+ para ver se consigo reproduzi-lo lá

Ok 4.4.32 funciona para mim enquanto recebo o erro depois de algum tempo com a versão atual.

Você pode testar este firmware: https://www.dropbox.com/s/m8vvbpgx2x047ox/firmware_bl.zip?dl=0
e informe se resolveu o problema.

Eu fiz um rpi-update para a versão mais recente e, em seguida, atualizei os arquivos de firmware. Até agora não consigo reproduzir o problema, mas vou deixá-lo funcionando assim durante a noite e testá-lo novamente amanhã.

Ok, acabei de testar novamente. Este Firmware corrige o problema para mim.

Olá @popcornmix. Quando, enquanto essa mudança, chega ao kernel principal ou ao disponível via rpi-update?

Alguns dias atrás, recebi minha tela sensível ao toque original (v1.1).
Quando configurei tudo (instalação limpa do Raspbian com tudo atualizado), notei que a tela ficava em branco e, depois de um tempo, não acordava mais ao tocá-la. Tendo verificado todas as conexões, eu sabia que tinha que ser algo relacionado ao software.

Então notei esse problema, que parecia ser exatamente o mesmo problema que eu tive.
A execução de rpi-update não o corrigiu, mas parece que os arquivos do link do Dropbox parecem corrigi-lo (dedos cruzados).

Vou deixá-lo ligado durante a noite e voltar aqui para confirmar se realmente resolveu o problema.

Essa correção deve estar no firmware de atualização rpi mais recente.

@popcornmix - algum tempo atrás (beofre pixel?) Eu poderia mudar rpi_backlight/brightness muito rapidamente.
Agora, quando tento alterá-lo com frequência, recebo "rpi-backlight rpi_backlight: falha na alteração da luz de fundo".
Eu queria criar uma transição de luz de fundo suave, mas agora parece impossível?

@popcornmix Posso confirmar que o firmware baixado do seu link do Dropbox corrigiu o problema de ativação após o apagamento. Sugiro obter essa correção em uma atualização do apt-get o mais rápido possível, para evitar que as pessoas retornem telas sensíveis ao toque 'defeituosas'. Obrigado!

@roblan A comutação da luz de fundo é limitada a 500ms por motivos de hardware.
@P33M pode saber os detalhes, mas acredito que algo ruim acontece se você mudar muito rapidamente.

@popcornmix você sabe quando essa mudança foi introduzida? E onde posso encontrar informações por quê?

O limite de taxa original de 500 ms foi adicionado há mais de um ano.
Mas um bug neste código foi introduzido no último firmware de atualização do apt-get.
Você pode executar rpi-update para obter uma correção para o bug atual ou esperar que a correção atinja o firmware de atualização do apt-get.

@popcornmix Você sabe quando chegará ao apt-get?

Eu tenho o mesmo problema. É realmente frustrante quando você está tentando hospedar um quiosque usando essa configuração. Não tive esse problema usando Wheezy. Tornou esta tela sensível ao toque Raspberry Pi de 7" completamente inútil.

@Raynman77 Tente executar sudo rpi-update e tudo ficará bem. ;-)
Seria melhor se estivesse na imagem mais recente do Raspbian e no mais recente sudo apt-get update && sudo apt-get upgrade .

@jorisvervuurt Isso não atualiza o Raspbian para atualizações noturnas e instáveis?

@Raynman77 Ele realmente instala o firmware mais recente (de desenvolvimento), que pode ser instável. Eu não tive nenhum problema com isso embora. @popcornmix Quando podemos esperar que a correção esteja no último sudo apt-get upgrade ?

Isso é com @XECDesign
Eu recomendei um aumento de firmware para ele

@jorisvervuurt Sim, esta versão atualizada corrige o problema. Obrigado pela atenção. Espero que não tenha havido muitos bugs nesta versão.

O firmware apt está sendo alterado enquanto falamos.
Será o mesmo firmware do atual rpi-update então espero que seja bom.

Oi, eu tenho lutado com os mesmos problemas descritos por outros aqui. Estou no pi3 e na última imagem oficial.
Fiz um sudo rpi-update como sugerido acima e os problemas desapareceram. Obrigado pela correção!

@popcornmix O firmware pode ser atualizado para que pequenas alterações na luz de fundo (dentro de alguns por cento do valor real) sejam permitidas em uma taxa mais rápida? 500ms parece ser muito lento.

Meu objetivo é fornecer adaptações de luz de fundo suave (mudar de um valor para outro em aproximadamente 5 segundos) em caso de inatividade de tela mais longa. Funcionou muito bem com versões mais antigas de firmware, mas com a mais nova, onde o limite de 500ms está realmente funcionando, parece realmente nojento :(

Ah. Eu vejo um problema aqui - o ratelimit é sempre aplicado, enquanto que o motivo original para aplicá-lo era limitar a comutação forçada em placas de exibição v1.0 que suportam apenas a ativação ou desativação. Outras placas não têm essa limitação, portanto, não há motivo para não permitir taxas de alteração de luz de fundo arbitrárias.

@popcornmix Obrigado. Os últimos commits corrigiram o problema, posso fazer alterações de luz de fundo lentas e suaves novamente :)

@popcornmix Você sabe quando essa correção estará disponível na atualização estável do apt-get?

@roblan apt-get firmware é datado de 3 de março, então incluirá a correção de luz de fundo mais recente.

Estou tendo o problema de ativação da tela de toque desde que atualizamos para Jessie - 7 de dezembro de 2016. Fiz uma atualização e atualização de dist em 9 de março de 2017 e isso não teve efeito no problema de ativação. Alguma idéia de quando a correção adequada estará disponível ou um mod simples para o sistema operacional?

Devo acrescentar que às vezes a tela não acorda no toque ou no teclado, mas alguns minutos depois parece funcionar bem.

@GreenEyes2796 o que vcgencmd version informa para você?

25 de novembro de 2016 16:03:50
Copyright (c) 2012 Broadcam
versão (sequência hexadecimal longa) (limpa) (lançamentos)

Você precisa do número da versão da string hexadecimal? Obrigado

Seu firmware é muito antigo. A versão dist-upgrade deve ser mais recente que essa (com data de março).

Hmm. Acabei de atualizar e atualizar novamente e a versão não mudou. Conexão de internet em funcionamento conhecida. Alguma ideia de por que estou preso em novembro de 2016?

Eu suponho que você reiniciou após a atualização?
Você já executou o rpi-update ou o firmware atualizado manualmente?
Você poderia tentar:

sudo apt-get update && sudo apt-get upgrade --reinstall raspberrypi-bootloader

sim. Reinicializou após atualização e atualização dist.
Vou tentar sua reinstalação.

Falhou. Eu acho que todas as atualizações de dist estão falhando, talvez eu deva apenas baixar uma distribuição atual?

Sim, acho que a instalação da imagem mais recente do raspbian jessie é provavelmente aconselhável.

Algo está errado na sua imagem. Pode ser possível corrigi-lo, mas isso provavelmente será mais difícil do que reinstalar, e você nunca saberá se corrigiu tudo.

Obrigado!

Em 13/03/2017 17:41, popcornmix escreveu:
>

Sim, acho que instalar a imagem mais recente do raspbian jessie é provavelmente
aconselhável.

Algo está errado na sua imagem. Pode ser possível corrigi-lo, mas
isso provavelmente será mais difícil do que reinstalar, e você nunca saberá
se você corrigiu tudo.


Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/raspberrypi/linux/issues/1179#issuecomment-286252915 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AZKeWTFxG3omlFjmGX2CMeuDHCmn-2qDks5rlbgmgaJpZM4GZAVz .

--
Vicente Kelly
Diretor - Green Eyes LLC
+1 443 746 2175
[email protected]
gescience. com

Instalou o sistema operacional raspian de 3 de março de 2017 e a tela de toque acordou
com sucesso cinco vezes seguidas. Acho que está resolvido. Obrigado!

Em 13/03/2017 17:41, popcornmix escreveu:
>

Sim, acho que instalar a imagem mais recente do raspbian jessie é provavelmente
aconselhável.

Algo está errado na sua imagem. Pode ser possível corrigi-lo, mas
isso provavelmente será mais difícil do que reinstalar, e você nunca saberá
se você corrigiu tudo.


Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/raspberrypi/linux/issues/1179#issuecomment-286252915 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AZKeWTFxG3omlFjmGX2CMeuDHCmn-2qDks5rlbgmgaJpZM4GZAVz .

--
Vicente Kelly
Diretor - Green Eyes LLC
+1 443 746 2175
[email protected]
gescience. com

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

fivdi picture fivdi  ·  9Comentários

XECDesign picture XECDesign  ·  6Comentários

wudo94 picture wudo94  ·  5Comentários

Nuntis-Spayz picture Nuntis-Spayz  ·  5Comentários

mi-hol picture mi-hol  ·  8Comentários