web-dev-qa-db-ja.com

EDIDが利用できない場合、Linuxの動作を改善するにはどうすればよいですか?

Mythbuntu 12.04は、オンになっているときに EDID 情報のみを提供するテレビで使用しています。コンピューターはMythTVを介してビデオを録画するために使用されるため、コンピューターの実行中は常にテレビをオンにしたくありません。

EDIDをファイルに保存し、/ lib/firmwareに入れ、drm_kms_helper.edid_firmware=DVI-I-1:LT26-A.VGA.EDID.binをカーネルコマンドラインに追加しました。カーネルはこのファイルからEDIDをロードし、Xは適切な解像度で起動します。ただし、カーネルは引き続きデバイスからEDIDを読み取ろうとし、次のようなメッセージでログをスパムします。

[   31.926373] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 128
[   31.927144] Raw EDID:
[   31.927352]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.927882]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.928454]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.928984]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.929513]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.930042]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.930569]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.931097]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.931630] radeon 0000:01:00.0: DVI-I-1: Ignoring invalid EDID block 1.
[   31.990143] i2c i2c-3: sendbytes: NAK bailout.
[   31.993215] [drm:radeon_dvi_detect] *ERROR* DVI-I-1: probed a monitor but no|invalid EDID
[   32.023802] [drm] Got external EDID base block and 0 extensions from "LT26-A.VGA.EDID.bin" for connector "DVI-I-1"
[   32.774355] i2c i2c-3: sendbytes: NAK bailout.

Drm_kms_helper.edid_firmwareオプションを追加すると、シャットダウンまたは再起動時に長い遅延が発生します。モニターの電源が入っていても起こります。その一部は、plymouthのすべての呼び出しがしばらくハングしたためであり、おそらくplymouthdがハングしたためです。これにより、シャットダウン時に実行されるスクリプトがしばらくハングします。シャットダウン時にplymouthdを実行しないと役立ちますが、まだ遅延があります。

遅延後、私は見ます:

[drm:edid_load] *ERROR* Requesting EDID firmware "LT26-A.VGA.EDID.bin" failed (err=-2)

これは非常に速く点滅し、スプラッシュ画面または再起動が続きます。カメラでしか録画できませんでした。遅延の間、コンピューターはSSHを介して完全に使用可能であったため、私には意味がありません。カーネルはファイルを読み取れるはずです。

これはプリマスの問題だとは思わない。おそらくハングしているのは、要求するビデオモードの変更がハングしているためです。ただし、プリマスに通常のVGAテキストモードを常に維持するように指示できるようになりたいです。

drm_kms_helper.poll=0およびdrm_kms_helper.poll=Nカーネルオプションも試しました。/sysに従ってオプションを設定できますが、それによる変更は見当たりません。

nomodesetカーネルパラメーターを追加すると、これらの問題が解消されます。ただし、Xサーバーのradeonドライバーの現在のバージョンは正しく機能せず、新しいバージョンは実行を拒否します。

更新:--tty=/dev/consoleのシャットダウン時のplymouthdの呼び出しに/etc/init/plymouth.confを追加すると、テレビがオフになっていてもシャットダウンのハングが修正されました。

7
dreamlayers

まったく同じ問題はありませんが、開いているセッション間でユーザーを切り替えると、xorgで問題が見つかりました。

問題:1600x1050とのセッションがあり、同じ1600x1050解像度で以前に設定された別のユーザーのセッションに切り替えます。しかし、このセッションに切り替えると、画面は1280x1024になり、何らかの理由でセッションのサイズが非常に間違っています(画面の解像度よりも大きく、ほとんどのものを移動またはクリックできないため、再起動する必要がありますすべてのXorg)。

回避策:幸いなことに、私はそれをトリッキーな方法で解決する方法を見つけました:解決ファイルで解決ファイル名を変更してください。

  1. Get-edidコマンドをインストールします。

    Sudo apt-get install read-edid
    
  2. Edid情報を含むbinファイルを作成します。

    Sudo get-edid  > 1600x1050.bin
    
  3. このファイルを保存するフォルダーを作成します。

     Sudo mkdir /lib/firmware/edid
    
  4. ファイルをコピーします。

     Sudo cp 1600x1050.bin /lib/firmware/edid
    
  5. Grubを編集してlinuxコマンドを編集し、このファイルをkmsでロードします。

     sudoedit /etc/default/grub
    

    行を編集:

     GRUB_CMDLINE_LINUX_DEFAULT="drm_kms_helper.edid_firmware=edid/1600x1050.bin quiet" 
    

    Name.binファイルを変更して実行します

     Sudo update-grub
    
  6. 再起動してテストします。

何らかの理由で、それは私にとって非常にうまくいきました。このカードとドライバーがあります:
fglrxinfo
display::0 screen:0
OpenGLベンダー文字列:Advanced Micro Devices、Inc.
OpenGLレンダラー文字列:AMD Radeon HD 6450
OpenGLバージョン文字列:4.2.12002互換性プロファイルコンテキスト9.012

コマンドを実行した後に表示される以下の私のedid情報
# parse-edid < 1600x1050.bin

parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

        # EDID version 1 revision 3
Section "Monitor"
        # Block type: 2:0 3:fc
        Identifier "22T41-H-AN"
        VendorName "KTC"
        ModelName "22T41-H-AN"
        # Block type: 2:0 3:fc
        # Block type: 2:0 3:fd
        HorizSync 15-68
        VertRefresh 49-61
        # Max dot clock (video bandwidth) 150 MHz
        # DPMS capabilities: Active off:no  Suspend:no  Standby:no

        Mode    "1280x720"      # vfreq 60.000Hz, hfreq 45.000kHz
                DotClock        74.250000
                HTimings        1280 1390 1430 1650
                VTimings        720 725 730 750
                Flags   "+HSync" "+VSync"
        EndMode
        Mode    "1680x1050"     # vfreq 59.883Hz, hfreq 64.674kHz
                DotClock        119.000000
                HTimings        1680 1728 1760 1840
                VTimings        1050 1053 1059 1080
                Flags   "-HSync" "+VSync"
        EndMode
        # Block type: 2:0 3:fc
        # Block type: 2:0 3:fd
EndSection

kernel.log:

2139 Oct  2 21:45:06 dans679-computer kernel: [    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.8.0-30-generic root=UUID=939b3111-4906-46ae-9ad7-7faa783d490d ro drm_kms_helper.edid_firmware=edid/1600x1050.bin quiet

ランチパッドで同様のバグレポートを探していましたが、まだ正しいものを探していました。この問題は、ユーザーセッション間の切り替えだけでなく、KMS(カーネルモードスイッチ)の多くのことに影響を与えると思います。

この問題を報告する正しい方法を見つけるのは非常に困難です。Xorg/ Kernelチームの助けを借りたいです。

これは何らかの低レベルで修正できると思いますが、この種の回避策ではユーザーにとってより簡単な方法で修正できると思います:たとえば、edidが検出されたかどうかをテストするスクリプトを追加し、ユーザーにスクリプトがedid情報を取得し、それをカーネルコマンドに渡し、それが正常に機能していたかどうか、ユーザーがこれらの設定を保持するかどうかを尋ねます。

この情報のほとんどは Arch wikiカーネルモード設定ページ で見つかりました。

私はそれを投稿しています:

https://askubuntu.com/posts/352978

https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ATI/+bug/579292

2
pablodav

Edidで始まる必要があります

00 FF FF FF FF FF FF 00

fFの128倍にはなりません。

EDIDがありません。おそらく、EDIDを備えたチップではないか、モニターまたはビデオカード間のEDIDインターフェイスの物理的な接触が壊れているためです。または、モニター内でも。

1
Analysis