Bagaimana cara mengatur tampilan kedua melalui DVI / viewport dengan Lenovo T420S?

13

Lenovo T420S saya memiliki kartu grafis diskrit dengan teknologi nvidia optimus. Apa yang pada dasarnya ingin saya capai adalah sebagai berikut:

  • gunakan layar kedua - terhubung melalui DVI / viewport - di tempat kerja (VGA buram)
  • mencapai kinerja baterai sedang hingga baik saat bepergian (2 jam)

Sejauh yang saya ketahui, saya memiliki opsi berikut:

  1. menonaktifkan Optimus, gunakan grafis internal secara eksklusif
  2. menonaktifkan Optimus, gunakan nvidia secara eksklusif
  3. aktifkan Optimus, gunakan bumblebee ( beranda ) / ironhide

(1) mendiskualifikasi ketika saya membaca (dan mengalami) bahwa DVI / viewport secara teknis tidak dapat digunakan melalui grafik internal

(2) belum benar-benar mencoba sejauh ini, hanya tes-instal cepat yang boot ke layar hitam setelah saya menambahkan driver nvidia :-(

(3) mengikuti blog ini , menggunakan bumblebee bukan ironhide. Bumblebee bekerja (saya bisa melihat FPS yang mengesankan pada glxgears), tapi saya tidak mendapatkan tampilan kedua yang dikenali . Saya juga merasa tersesat di nvidia-driver-hell dan tidak punya kesempatan untuk menjalankan nvidia-xconfig, hanya karena itu tidak diinstal. Tidak tahu apakah tampilan kedua seharusnya dikenali di luar kotak? Apakah saya perlu menginstal lebih banyak? Apakah saya perlu mengacaukan xorg.conf saya? Banyak pertanyaan, sedikit jawaban.

Jadi, apa yang bisa saya lakukan untuk mencapai tujuan saya? Jalan mana yang harus diikuti, dan apa langkah selanjutnya?

Ada saran apa pun :-)

Pembaruan : Terima kasih kepada semua orang yang menjawab. Saya akan memigrasi lingkungan kerja saya ke instalasi "diskrit", dan akan menggunakan "optimus / lebah" sebagai proyek bermain paralel dan melihat seberapa jauh saya mendapatkan ... Saya akan memposting pertanyaan masa depan di utas baru.

jan groth
sumber

Jawaban:

5

Saya memiliki Thinkpad W520 dan telah mengotak-atik ini secara ekstensif. Saya tidak yakin berapa banyak kesamaan W520 dan T420S, tetapi saya telah menulis posting blog di sini menguraikan situasi gambaran besar dan memberikan beberapa saran.

Anda harus bisa mendapatkan 2 jam masa pakai baterai menggunakan kartu nvidia dengan driver eksklusif penuh waktu. Itu mungkin juga akan menjadi opsi yang melibatkan paling tidak repot ketika menambahkan tampilan eksternal (Program "disper" sangat membantu untuk ini). Jika driver eksklusif nvidia untuk kartu di T420s berfungsi sama seperti untuk W520, mereka akan secara otomatis melakukan overclock kartu saat tidak digunakan penuh (mereka menyebutnya "Power Mizer"), sehingga masa pakai baterai Anda tidak akan terlalu mengerikan. Jujur, saya hanya mendapatkan 25 atau 30% peningkatan masa pakai baterai dengan mematikan kartu nvidia. Juga, saya percaya bahwa dengan Bumblebee terinstal, Anda mungkin tidak dapat menggunakan monitor eksternal Anda karena kartu nvidia sudah menjalankan server X "di bawah tenda". Singkatnya, saya akan merekomendasikan opsi mengejar (2) lebih lanjut.

Ketika saya menginstal dan menghapus Bumblebee, saya mengalami sedikit masalah agar driver proprietary nvidia bekerja kembali. Berikut beberapa hal yang perlu diperhatikan: (a) W520 memiliki opsi BIOS yang terkait dengan skema grafik yang digunakan. Saya tidak yakin apa pilihan T420, tetapi jika Anda ingin menggunakan grafis nvidia pada layar Thinkpad Anda, Anda mungkin harus dalam mode "diskrit". (B) Anda mungkin harus main-main dengan program "jockey" di ubuntu untuk mendapatkannya untuk menggunakan driver berpemilik.

Semoga berhasil! Saya harap ini bisa membantu.

Zach
sumber
... pasti sangat membantu, terima kasih telah menjawab!
Januari groth
Setelah membaca komentar lain di thread ini, tampak bahwa T420 adalah tidak dikonfigurasi dalam cara yang sama seperti W520 yang - kartu terpadu yang terhubung ke output VGA (tidak seperti pada W520 - ini juga menjelaskan mengapa T420 mampu dari mendukung 3 monitor eksternal sedangkan W520 hanya mampu mendukung 2).
Zach
Jadi pertanyaannya adalah mode BIOS apa yang tersedia di T420? Dari pos @ John, tampaknya ada setidaknya mode Optimus dan mode diskrit. Jika Anda mengejar opsi (2), Anda ingin memastikan bahwa Anda berada dalam mode diskrit seperti @ John. Jika Anda berada dalam mode Optimus, layar Thinkpad internal dan layar digital eksternal mungkin dikontrol oleh kartu grafis yang berbeda dan Anda harus melakukan beberapa main-main dengan xorg.conf Anda untuk membuatnya berfungsi.
Zach
@ Zak: Terima kasih untuk posting blog. Saya tanpa malu-malu mencuri dari versi lanjutannya dan penulisan ulang Sagar Karandikar , dan menambahkan beberapa pembaruan yang relevan dengan versi terbaru Ubuntu dalam jawaban saya .
krlmlr
7

Ubuntu 14.10 dan yang lebih baru: Jauh lebih sederhana di sana. Silakan lihat jawaban ini dan komentar saya di bawah ini.

Catatan : Ini hanya berfungsi di Ubuntu 13.04. Ada beberapa perbedaan dalam 13.10.

Saya telah berhasil menghubungkan dua monitor eksternal (selain panel bawaan) ke ThinkPad T430 saya di Ubuntu 13.04, dengan Optimus ("Switchable graphics") diaktifkan (opsi 3 dalam daftar Anda). Monitor terhubung melalui antarmuka DVI, salah satunya diputar. Berbeda dengan solusi lain, semua monitor terpasang pada window manager yang sama, sehingga windows dapat dipindahkan secara bebas di antara monitor. Ini mencapai tujuan masa pakai baterai yang ditingkatkan jika terputus dan menggunakan monitor eksternal jika terhubung.

Ide kuncinya di sini adalah:

  • Adaptor grafis internal bertanggung jawab untuk mengelola gambar (bitmap) yang sebenarnya ditampilkan
  • Secara default, semuanya ditampilkan pada adaptor grafis internal
  • Aplikasi akselerasi GPU menggunakan adaptor grafis diskrit, output disalin ke adaptor grafis internal
  • Untuk setiap monitor eksternal, adaptor grafis internal menyediakan tampilan "virtual"
  • Output ke monitor eksternal terjadi menggunakan server X kedua, konten dari tampilan "virtual" secara konstan disalin ke server X kedua

Manfaat utama dibandingkan solusi lain adalah bahwa semua tampilan (tampaknya) adalah bagian dari sesi X yang sama, sehingga Anda dapat dengan bebas memindahkan jendela di antara layar.

Sejauh ini saya tidak melihat penalti kinerja.

Instruksi

Anda perlu melakukan hal berikut:

  • Instal Bumblebee dari PPA
  • Bangun dan pasang driver video Intel khusus
  • Unduh, kompilasi, dan akhirnya instal program kecil
  • Edit dua file konfigurasi
  • Mulai ulang beberapa kali

Untuk sebagian besar tindakan, Anda akan memerlukan terminal, editor teks, dan akses root ( sudo). Instruksi lengkap diberikan di bawah ini.

Pasang Bumblebee

Ikuti bagian "pengaturan dasar" dari instruksi . Eksekusi sebagai root, perintah terakhir sebenarnya memulai reboot:

add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot

Jangan coba-coba Jalankan lebah dengan pengemudi nouveau saja? . Dari pengalaman saya itu tidak berfungsi, setidaknya tidak dalam pengaturan ini.

Validasi

Anda harus bisa berlari optirun glxgears.

Instal versi tambalan xserver-xorg-video-intel

Opsi 1: Instal dari PPA saya (saat ini hanya Ubuntu 13.04)

Jalankan yang berikut ini sebagai root:

add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel

Opsi 2: Bangun dan instal paket Anda sendiri

Pilih tambalan terbaru untuk xserver-xorg-video-intel. Klik file, klik tombol "Raw", salin URL di browser. Pada saat penulisan, ini adalah https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch .

sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb

Validasi (1), untuk kedua opsi

Perintah

apt-cache policy xserver-xorg-video-intel

harus menunjukkan versi yang ditambal ( +virtualsuffix) dan versi Ubuntu asli.

Diperlukan untuk 13,04, untuk kedua opsi

Tambahkan yang berikut ke Anda /etc/X11/xorg.conf, buat jika perlu:

Section "Device"
    Identifier "intel"
    Driver "intel"
    Option "AccelMethod" "uxa"
    Option "Virtuals" "2"
EndSection

Validasi (2), untuk kedua opsi

Setelah reboot, jalankan xrandrdi terminal. Keluaran harus mencantumkan dua tampilan virtual tambahan.

Unduh dan bangun screenclone

Dapatkan garpu screenclone dari puetzk dan dependensinya, dan kompilasi.

sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make

Validasi

File screencloneada dan dapat dieksekusi. (Namun, itu belum berjalan.)

Edit xorg.conf.nvidia

  • Buka file /etc/bumblebee/xorg.conf.nvidiadalam editor teks, sebagai root
  • Komentari atau hapus baris yang membaca UseEDIDatauUseDisplayDevice
  • Di Section "ServerLayout", tambahkan entriScreen "Screen0"
  • Di bagian bawah file, tambahkan berikut ini:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • Mulai ulang

Pengujian

Pengaturan saya mengasumsikan monitor lanskap terhubung ke port DVI pertama dari stasiun dok, dan potret yang terhubung ke port DVI kedua. Jalankan perintah berikut di terminal dari direktori tempat screenclone berada , sesuaikan seperlunya.

xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg

Perhatikan bagaimana rotasi tampilan harus didefinisikan dua kali. Anda dapat menghilangkan doa kedua xrandrjika tidak ada rotasi yang diinginkan (dan, tentu saja, --rotate leftdalam doa pertama).

Dengan mengakhiri screenclonedengan Ctrl + C (yang telah dimasukkan ke latar depan menggunakan fg), adaptor grafis diskrit dimatikan. Anda dapat memverifikasi ini dengan cat /proc/acpi/bbswitch. Namun, ruang layar disediakan untuk dua monitor yang sekarang terputus. Untuk beralih kembali ke layar laptop saja, gunakan

xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off

Membersihkan

  • Salin screencloneke direktori yang ada di PATH(misalnya, /usr/local/bin)

  • Buat bashskrip untuk mengotomatiskan startup dan shutdown tampilan eksternal. Skrip ini akan mengatur tampilan eksternal saat start dan beralih ke display laptop hanya pada saat keluar (mis. Dengan menekan Ctrl + C).

    #!/bin/bash
    set -m
    xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
    trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
    screenclone -b -x 1:0 -x 2:1 &
    sleep 1
    xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
    fg
    
  • Pilihan alternatif: Kumpulan skrip saya berisi dua skrip, extmon-startdan extmon-stop, yang mengaktifkan dan menonaktifkan monitor kedua dan ketiga. Edit extmon-startskrip yang sesuai dengan konfigurasi Anda.

Referensi

Jawaban saya sebagian besar diambil dari sumber berikut:

krlmlr
sumber
Ini bekerja sangat baik untuk saya, terima kasih. Apakah Anda memiliki masalah dengan banyak kelambanan saat menggunakan desktop virtual dan Compiz dengan solusi ini?
Damon
@blackrobot: Saya menggunakan Gnome Shell, ada sedikit keterlambatan tapi ini tidak mengganggu saya.
krlmlr
@ krlmlr: ada peluang untuk mendapatkan pengaturan yang sama ini di 13.10?
flx
@ flx: Di 13.10 CRTC "virtual" dibuat menjadi xorg-xserver-video-inteldriver stok , tidak perlu menggunakan PPA atau patch saya. Juga tidak perlu diedit xorg.conf, "virtual" CRTC dibuat sesuai permintaan. Sisanya harus serupa. Sekarang bahkan ada alat yang menggantikan screenclone, itu disebut intel-virtual-outputdan akan berintegrasi lebih lancar dengan konfigurasi tampilan desktop Anda. Saya akan melakukan writeup setelah saya mendapatkan pengaturan tri-head saya dengan rotasi berfungsi dengan benar.
krlmlr
1
@ flx: Anda perlu menambahkan mode ( xrandr --newmode; cvtalat membantu menghitung modeline), dan menetapkan ini ke tampilan virtual ( xrandr --addmode). Mode ini harus sesuai dengan tampilan Anda yang sebenarnya. Lihat apakah tampilan virtual kedua dibuat secara otomatis. Inilah yang intel-virtual-outputdilakukan oleh alat itu sendiri, dan sepertinya masalah terakhir telah diperbaiki atau akan segera terjadi.
krlmlr
2

Tidak tahu tentang T420S tetapi T420 saya dapat bertahan hingga 9 jam

  1. Monitor gelap
  2. nvidia dinonaktifkan dengan lebah / bbwith
  3. dan penyetelan ekstra dengan pm-utils

Dan ya, ini adalah baterai standar. Jadi Anda harus dengan mudah mendapatkan 2 jam, jadi:

(2) Di /etc/X11/xorg.conf Cobalah dengan Opsi "ConnectedMonitor" "DFP-0" untuk driver nvidia.

(3) Untuk menggunakan tampilan kedua Anda, Anda perlu bumblebee xorg.conf yang dimodifikasi Lihat https://github.com/Bumblebee-Project/Bumblebee/issues/77 untuk detailnya.

Pengecut Anonim
sumber
1
Terimakasih telah menjawab. Apakah saya mengerti Anda bahwa Anda tidak menggunakan layar (DVI) kedua? Sejujurnya: Saya merasa sangat rumit untuk menyelesaikan masalah yang Anda tautkan - saya pasti akan mencoba, tetapi itu akan memakan waktu berjam-jam sampai saya bahkan memiliki sedikit gagasan tentang apa yang seharusnya saya ubah (dan mengapa). Sebenarnya, ini laptop saya untuk bekerja, dan saya hanya ingin berfungsi. Agak berharap bahwa tugas seperti menghubungkan layar kedua tidak akan membuat saya mengejar masalah terbuka perangkat lunak yang bahkan belum pernah saya dengar seminggu yang lalu ... :-(
jan groth
Ini sangat sederhana seperti pada Masalah github, cukup hapus baris (baris baru) Opsi "UseEDID" "false" (baris baru) Opsi "ConnectedMonitor" "DFP" (baris baru) dari /etc/bumblebee/xorg.conf.nvidia dan bumblebee dengan menghasilkan output pada Display Port. Anda akan mendapatkan gambar kosong di awal. Anda bisa mendapatkan misalnya xterm di sana dengan ekspor DISPLAY =: 8.0 (baris baru) xterm. (wtf menekan enter di sini memang mengirimkan komentar alih-alih membuat baris baru)
Anonymous Coward
2

Saya menggunakan T420 di tempat kerja dengan stasiun docking tipe 4438. Saya dapat menggunakan dua monitor layar lebar (tanpa monitor utama) atau 1 monitor layar lebar dengan monitor utama menggunakan porta DVI pada stasiun dok.

Saya hanya menonaktifkan optimus dan mengaturnya untuk selalu menggunakan kartu NVIDIA. Kemudian saya menjalankan nvidia-xconfig dan menggunakan pengaturan nvidia untuk mengatur dua monitor, menyimpan pengaturan ke file xorg.conf dan mem-boot ulang mesin.

Saya bisa mendapatkan sedikit lebih dari 2 jam masa pakai adonan dengan cara ini (tanpa modifikasi lainnya untuk memungkinkan masa pakai baterai lebih lama). Masalah utama yang saya miliki adalah bahwa itu tidak beralih secara otomatis ke satu monitor ketika reboot jauh dari stasiun dok atau dihapus dari stasiun dok. Saya belum punya waktu untuk melihat ini.

Saya akan mencoba Bumble Bee akhir minggu ini untuk melihat apakah saya bisa membuatnya bekerja. Saya akan mencoba mengingat untuk memposting di sini jika saya dapat membuatnya berfungsi.

John
sumber
2

Saya memiliki masalah yang sama. Saya telah melakukan beberapa penelitian dan menyelesaikannya sebagian. Saya masih mengerjakan solusi lengkap.

Perangkat keras: Thinkpad T420s dengan Nvidia 4200M + Intel HD 3000 grafis Thinkpad dock.

Gejala: T420s tidak dapat mengenali layar eksternal yang terhubung ke porta DVI di dok. Itu bisa mengenali tampilan eksternal melalui port VGA di dock. Namun, kualitasnya buruk.

Penyebab utama: 1. T420s memiliki kartu Nvidia yang terhubung ke porta DVI sementara kartu Intel ke port VGA di dock. 2. Tidak seperti Win 7, Ubuntu tidak dapat beralih antara kartu Nvidia dan kartu Intel. Secara default, hanya kartu Intel yang digunakan.

Solusinya: 0. Masukkan T420 ke dok dan sambungkan layar eksternal ke porta DVI. 1. Goto BIOS, cari "Display", ubah konfigurasi menjadi "Discrete Card" dan "Disable Nvidia Optimus". Sekarang T420s terpaksa menggunakan kartu Nvidia. 2. Unduh dan instal driver Nvidia untuk Linux. Google instruksi terperinci. 3. Setelah instalasi, Lakukan "sudo nvidia-settings". 4. Di jendela sembul, "X Server Display Configuration", Klik "Detect Displays". Anda akan dapat melihat tampilan eksternal sekarang. 5. Di halaman yang sama, ubah Konfigurasi ke "TwinView", Resolusi "Otomatis" atau resolusi asli T420s, katakanlah, 1600x900. 6. Klik "Terapkan", Anda akan dapat melihat tampilan desktop eksternal. 7. Klik "Simpan ke File Konfigurasi X".

[Memperbarui]

Dengan menggunakan Disper, saya dapat mengubah tampilan T420 dan tampilan eksternal secara manual. Masih bukan solusi terbaik, tapi saya pikir itu cukup baik untuk saya.

Jadi silakan coba Nvidia grafis diskrit + kombinasi disper.

Gumin baru
sumber
... masalah dengan kartu diskrit adalah bahwa itu menguras baterai sangat cepat ...
Januari groth
Anda harus dapat menggunakan port tampilan dalam mode nvidia optimus menggunakan metode yang dijelaskan di sini: zachstechnotes.blogspot.com/2012/04/post-title.html Dengan begitu, Anda bisa mendapatkan masa pakai baterai yang baik dan menggunakan monitor eksternal pada display port (Anda akan melakukan rendering dengan kartu intel, jadi kualitasnya mungkin tidak sebagus yang Anda inginkan
Zach
1

VGA keluar pada T520 saya berfungsi dengan baik (tidak buram) menggunakan Grafik Terpadu (pengaturan Intel BIOS) tapi saya harus mengatur monitor 1920x1200 untuk hanya menampilkan lebar 1600 piksel jadi saya mendapatkan garis-garis hitam di kedua sisi. Tanpa pengaturan itu, monitor membentang 1600 px di seluruh layar 1920 dan ya, semuanya tampak buram.

Saya mengajukan pertanyaan serupa beberapa hari yang lalu dan tetap bingung dengan jawaban ini. Sepertinya @Anonymous Coward hanya menjalankan monitor eksternal tetapi saya (dan saya percaya OP) ingin dapat menjalankan layar laptop (pada intel) dan monitor eksternal melalui DisplayPort / DVI (pada nvidia). Jadi saya pikir Optimus / Bumblebee mungkin diperlukan.

Jika saya mengetahui masalah tampilan ini, saya pasti akan memposting temuan saya; silakan lakukan hal yang sama jika Anda mencapai garis finish terlebih dahulu.

OpenPrivacy
sumber
1
Terimakasih telah menjawab! Jika saya mengurangi resolusi monitor eksternal saya menjadi 1600x1200 layar menjadi lebih buruk ... BTW, saya menyalahkan produsen layar untuk keburamannya - mendengar beberapa cerita bahwa sumber input analog dapat menjadi standar yang cukup rendah saat ini, karena semua orang menggunakan koneksi digital. Oh, dan saya pasti akan terus memperbarui tiket ini.
Januari groth