抜け穴

抜け穴

私は多性デバイスを数日間使用していますがPaperlike HD、一日使用してみた後に付属のユーティリティがしてはいけないことをしているのではないか心配です。

ホットプラグイベント

まず、HDMI経由でホットプラグ情報を受信しないようです。いわゆるHPD(ホットプラグ検出)信号が通過しますpin 19(参照:ウィキペディア)到着していないようです。

手動で有効

書き直すことができます(インターフェースはですDP-1)。

echo 'on-digital' | sudo tee /sys/class/drm/card0-DP-1/status

今、私たちはEDID次の情報を読むことができます。edid-decode /sys/class/drm/card0-DP-1/edid

edid-decode (hex):

00 ff ff ff ff ff ff 00 12 63 01 00 00 00 00 00 
0a 1d 01 03 80 14 0f 78 2a 08 a5 a2 57 4f a2 28 
0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 
01 01 01 01 01 01 c1 3e 98 a8 80 72 2e 60 38 20 
36 00 c8 96 00 00 00 1e 00 00 00 10 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 fc 00 50 
61 70 65 72 6c 69 6b 65 20 48 20 44 48 3f 40 30 
62 b0 32 40 40 c0 13 00 6d 55 21 00 00 1e 00 d1 

----------------

EDID version: 1.3
Manufacturer: DSC Model 1 Serial Number 0
Made in week 10 of 2019
Digital display
Maximum image size: 20 cm x 15 cm
Gamma: 2.20
DPMS levels: Off
RGB color display
First detailed timing is preferred timing
Color Characteristics
  Red:   0.6328, 0.3398
  Green: 0.3105, 0.6328
  Blue:  0.1582, 0.0605
  White: 0.3134, 0.3291
Established Timings I & II: none
Standard Timings: none
Detailed mode: Clock 160.650 MHz, 200 mm x 150 mm
               2200 2256 2288 2368 ( 56  32  80)
               1650 1653 1659 1696 (  3   6  37)
               +hsync +vsync
               VertFreq: 40.001 Hz, HorFreq: 67.842 kHz
Dummy Descriptor
Display Product Name: Paperlike H D
Detailed mode: Clock 162.000 MHz, 621 mm x 341 mm
               1600 1664 1856 2160 ( 64 192 304)
               1200 1201 1204 1250 (  1   3  46)
               +hsync +vsync
               VertFreq: 60.000 Hz, HorFreq: 75.000 kHz
Checksum: 0xd1

チェックサムは正しいです。指定されたモデルラインを使用してインターフェイスを手動で設定します。

xrandr --newmode "Low-res" 162.000 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
xrandr --addmode DP-1 "Low-res"
xrandr --output DP-1 --mode "Low-res"

抜け穴

その結果、次のようなトレースが発生します(dmesg -w)。

[  760.510138] ------------[ cut here ]------------
[  760.510140] WARN_ON(len <= 0)
[  760.510208] WARNING: CPU: 2 PID: 1418 at drivers/gpu/drm/i915/display/intel_dp.c:1801 intel_dp_max_link_rate+0x53/0x60 [i915]
[  760.510212] Modules linked in: rfcomm ccm msr cmac algif_hash algif_skcipher af_alg bnep btusb btrtl btbcm btintel bluetooth ecdh_generic ecc uvcvideo binfmt_misc nls_iso8859_1 snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio snd_hda_intel mei_hdcp snd_intel_dspcfg intel_rapl_msr x86_pkg_temp_thermal snd_hda_codec intel_powerclamp snd_hda_core snd_hwdep kvm_intel snd_pcm kvm crct10dif_pclmul ghash_clmulni_intel snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq aesni_intel iwlmvm crypto_simd snd_seq_device cryptd mac80211 snd_timer glue_helper libarc4 snd i915 intel_cstate intel_rapl_perf input_leds iwlwifi intel_wmi_thunderbolt wmi_bmof serio_raw soundcore hid_sensor_magn_3d drm_kms_helper cfg80211 hid_sensor_incl_3d hid_sensor_gyro_3d hid_sensor_als mei_me processor_thermal_device hid_sensor_accel_3d hid_sensor_rotation joydev hid_multitouch mei intel_rapl_common i2c_algo_bit hid_sensor_trigger industrialio_triggered_buffer kfifo_buf int340x_thermal_zone
[  760.510243]  hid_sensor_iio_common fb_sys_fops intel_soc_dts_iosf industrialio syscopyarea sysfillrect intel_xhci_usb_role_switch sysimgblt roles intel_pch_thermal ideapad_laptop sparse_keymap int3400_thermal mac_hid acpi_thermal_rel acpi_pad sch_fq_codel coretemp parport_pc ppdev lp sunrpc parport drm ip_tables x_tables autofs4 usbhid hid_rmi rmi_core videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common hid_sensor_custom videodev mc hid_sensor_hub hid_generic sdhci_pci crc32_pclmul cqhci i2c_i801 sdhci ahci intel_lpss_pci libahci intel_lpss i2c_hid idma64 virt_dma wmi hid video pinctrl_sunrisepoint pinctrl_intel
[  760.510265] CPU: 2 PID: 1418 Comm: Xorg Tainted: G        W         5.4.0-34-generic #38-Ubuntu
[  760.510266] Hardware name: LENOVO 80MK/VIUU4, BIOS C6CN39WW 10/11/2016
[  760.510304] RIP: 0010:intel_dp_max_link_rate+0x53/0x60 [i915]
[  760.510312] Code: 74 11 3b 0a 7c f3 83 e8 01 48 98 8b 84 87 84 00 00 00 c3 55 48 c7 c6 f3 0e b6 c0 48 c7 c7 ec 0a b6 c0 48 89 e5 e8 18 b6 9e c6 <0f> 0b b8 d0 78 02 00 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5
[  760.510316] RSP: 0018:ffffacbf40ebbb40 EFLAGS: 00010286
[  760.510318] RAX: 0000000000000000 RBX: ffff98275e83a000 RCX: 0000000000000000
[  760.510319] RDX: 0000000000000011 RSI: ffffffff88f945b1 RDI: 0000000000000246
[  760.510320] RBP: ffffacbf40ebbb40 R08: ffffffff88f945a0 R09: 0000000000000011
[  760.510321] R10: ffffffff88f94980 R11: 0000000088f9459f R12: ffff9826fda56800
[  760.510322] R13: 00000000000a4cb8 R14: ffff982766680000 R15: 00000000000278d0
[  760.510324] FS:  00007f8f40701a80(0000) GS:ffff98276b300000(0000) knlGS:0000000000000000
[  760.510325] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  760.510326] CR2: 00007f0bb409b703 CR3: 0000000228540002 CR4: 00000000003606e0
[  760.510329] Call Trace:
[  760.510369]  intel_dp_mode_valid+0xb6/0x240 [i915]
[  760.510383]  drm_helper_probe_single_connector_modes+0x412/0x740 [drm_kms_helper]
[  760.510406]  drm_mode_getconnector+0x47d/0x4b0 [drm]
[  760.510409]  ? radix_tree_lookup+0xd/0x10
[  760.510428]  ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
[  760.510440]  drm_ioctl_kernel+0xae/0xf0 [drm]
[  760.510451]  drm_ioctl+0x234/0x3d0 [drm]
[  760.510471]  ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
[  760.510476]  ? __fsnotify_parent+0x9f/0x140
[  760.510478]  do_vfs_ioctl+0x407/0x670
[  760.510482]  ksys_ioctl+0x67/0x90
[  760.510484]  __x64_sys_ioctl+0x1a/0x20
[  760.510487]  do_syscall_64+0x57/0x190
[  760.510490]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  760.510491] RIP: 0033:0x7f8f40a6137b
[  760.510493] Code: 0f 1e fa 48 8b 05 15 3b 0d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 3a 0d 00 f7 d8 64 89 01 48
[  760.510494] RSP: 002b:00007ffd3eb26108 EFLAGS: 00003246 ORIG_RAX: 0000000000000010
[  760.510497] RAX: ffffffffffffffda RBX: 00007ffd3eb26150 RCX: 00007f8f40a6137b
[  760.510498] RDX: 00007ffd3eb26150 RSI: 00000000c05064a7 RDI: 000000000000000e
[  760.510499] RBP: 00000000c05064a7 R08: 0000000000000007 R09: 0000000000000190
[  760.510500] R10: 0000000000000140 R11: 0000000000003246 R12: 0000000000000001
[  760.510501] R13: 000000000000000e R14: 00007ffd3eb26150 R15: 0000000000000000
[  760.510503] ---[ end trace 706fd3d45f136b1f ]---

明らかに次の関数では、i915モジュール0intel_dp_common_len_rate_limit

int
intel_dp_max_link_rate(struct intel_dp *intel_dp)
{
    int len;

    len = intel_dp_common_len_rate_limit(intel_dp, intel_dp->max_link_rate);
    if (WARN_ON(len <= 0))
        return 162000;

    return intel_dp->common_rates[len - 1];
}

また、edidデータをコピーして/lib/firmware/edid/paperlike.binカーネルコマンドライン引数を追加しましたdrm_kms_helper.edid_firmware=edid/paperlike.bin。しかし、これは大きな違いはありません。私はこれが論理的だと思います。EDID情報がないわけではありません。ホットスワップピンが設定されていないため、全画面が接続されているとは見なされません。接続を手動で設定すると、情報を検索できますEDID。しかし、実際にデータを送信することはうまくいきません。私の考えでは、ホットプラグの動作をオーバーライドするために他のことを行う必要があると思いますが、どうすればよいですか?

現状

現在の状況は、Paperlike HD画面が空白です。何もしません。しかし、それらのいくつかはUSB動作します(タッチスクリーンです)。

上記のように設定すると、以下が提供さoutputれます。xrandr

xrandr: Configure crtc 1 failed

このパズルをほとんど解いているようですが、本当に助けが必要です。

関連情報