Jak skonfigurować drugi wyświetlacz przez DVI / rzutnię za pomocą Lenovo T420S?


13

Mój Lenovo T420S ma dyskretną kartę graficzną z technologią NVIDIA Optimus. W zasadzie staram się osiągnąć:

  • użyj drugiego wyświetlacza - podłączonego przez DVI / rzutnię - w pracy (VGA jest rozmyte)
  • osiągnąć umiarkowaną do dobrej wydajności baterii podczas podróży (2 godziny)

O ile się domyśliłem, mam następujące opcje:

  1. wyłącz Optimus, używaj wyłącznie grafiki wewnętrznej
  2. wyłącz Optimus, używaj wyłącznie nvidii
  3. włącz Optimus, użyj bumblebee ( strona główna ) / ironhide

(1) dyskwalifikuje, gdy czytam (i doświadczyłem), że DVI / rzutnia nie jest technicznie użyteczna przez wewnętrzną grafikę

(2) do tej pory nie próbowałem, po prostu szybka instalacja testowa, która uruchomiła się na czarnym ekranie po dodaniu sterowników NVIDIA :-(

(3) śledził tego bloga , używał trzmiela zamiast ironhide. Trzmiel zadziałał (widzę imponujące FPS na glxgears), ale nie udało mi się rozpoznać drugiego wyświetlacza . Czułem się zagubiony w piekle nvidia-driver-hell i nie miałem szansy uruchomić nvidia-xconfig, po prostu dlatego, że nie został zainstalowany. Nie masz pojęcia, czy drugi wyświetlacz ma być rozpoznawany po wyjęciu z pudełka? Czy muszę zainstalować więcej? Czy muszę zadzierać z moim xorg.conf? Wiele pytań, kilka odpowiedzi.

Co mogę zrobić, aby osiągnąć swoje cele? Którą ścieżkę podążać i jakie są kolejne kroki?

Wszelkie wskazówki są mile widziane :-)

Aktualizacja : Dziękujemy wszystkim, którzy odpowiedzieli. Przeprowadzę migrację środowiska pracy do instalacji „dyskretnej” i będę używać projektu „optimus / bumblebee” jako projektu równoległego i zobaczę, jak daleko się posunę ... W nowych wątkach opublikuję przyszłe pytania.

Odpowiedzi:


5

Mam Thinkpad W520 i obszernie się z tym bawiłem. Nie jestem pewien, jak wiele W520 i T420S mają ze sobą wspólnego, ale napisałem tutaj wpis na blogu , w którym opisuję sytuację z dużym obrazem i podam kilka sugestii.

Powinieneś być w stanie uzyskać 2 godziny pracy na baterii, korzystając z karty nvidia z zastrzeżonymi sterownikami w pełnym wymiarze godzin. Prawdopodobnie będzie to również opcja najmniej kłopotliwa przy dodawaniu zewnętrznego wyświetlacza (program „disper” jest do tego bardzo pomocny). Jeśli zastrzeżone sterowniki NVIDIA dla karty w T420 działają tak samo, jak w W520, automatycznie podkręcą kartę, gdy nie jest w pełni używana (nazywają to „Power Mizer”), więc żywotność baterii nie będzie zbyt duża okropny. Szczerze mówiąc, otrzymuję tylko 25 lub 30% dłuższą żywotność baterii, wyłączając kartę nvidia. Ponadto uważam, że po zainstalowaniu Bumblebee możesz nie być w stanie korzystać z zewnętrznego monitora, ponieważ karta NVIDIA już działa pod kontrolą serwera X. Podsumowując, zaleciłbym dalsze korzystanie z opcji (2).

Kiedy zainstalowałem i odinstalowałem Bumblebee, miałem trochę problemów z przywróceniem własnościowych sterowników NVIDIA. Oto kilka rzeczy do rozważenia: (a) W520 ma opcje BIOS związane z używanym schematem graficznym. Nie jestem pewien, jakie są opcje T420, ale jeśli chcesz używać grafiki nvidia na ekranie Thinkpad, prawdopodobnie musisz być w trybie „dyskretnym”. (b) Być może będziesz musiał zadzierać z programem „dżokej” w Ubuntu, aby zmusić go do używania zastrzeżonych sterowników.

Powodzenia! Mam nadzieję, że to pomogło.


... zdecydowanie pomaga, dziękuję za odpowiedź!
Jan Groth,

Po przeczytaniu innych komentarzy w tym wątku wydaje się, że T420 nie jest skonfigurowany w taki sam sposób jak W520 - zintegrowana karta jest podłączona do wyjścia VGA (w przeciwieństwie do W520 - wyjaśnia to również, dlaczego T420 jest w stanie obsługa 3 monitorów zewnętrznych, podczas gdy W520 może obsługiwać tylko 2).
Zach

Pytanie brzmi, jakie tryby BIOS są dostępne w T420? Z posta @ Johna wynika, że ​​istnieje co najmniej tryb Optimus i tryb dyskretny. Jeśli realizujesz opcję (2), chcesz się upewnić, że jesteś w trybie dyskretnym, takim jak @John. Jeśli jesteś w trybie Optimus, wewnętrzny wyświetlacz Thinkpad i zewnętrzny wyświetlacz cyfrowy są prawdopodobnie kontrolowane przez różne karty graficzne i będziesz musiał trochę popsuć swój xorg.conf, aby to zadziałało.
Zach

@Zach: Dzięki za post na blogu. Bezwstydnie ukradłem zarówno jego wersję uzupełniającą, jak i przepisaną przez Sagara Karandikara , i dodałem w mojej odpowiedzi kilka aktualizacji dotyczących najnowszej wersji Ubuntu .
krlmlr

7

Ubuntu 14.10 i nowsze: Jest tam o wiele, wiele prostsze. Proszę zobaczyć tę odpowiedź i mój komentarz poniżej.

Uwaga : Działa to tylko w systemie Ubuntu 13.04. Istnieją pewne różnice w 13.10.

Udało mi się podłączyć dwa zewnętrzne monitory (oprócz wbudowanego panelu) do mojego ThinkPada T430 na Ubuntu 13.04, z włączoną opcją Optimus („Przełączalna grafika”) (opcja 3 na liście). Monitory są podłączone przez interfejs DVI, jeden z nich jest obrócony. W przeciwieństwie do innych rozwiązań, wszystkie monitory są podłączone do tego samego menedżera okien, dzięki czemu okna można swobodnie przenosić między monitorami. Osiąga to cel polegający na zwiększeniu żywotności baterii w przypadku odłączenia i użyciu zewnętrznych monitorów, jeśli są podłączone.

Kluczową ideą tutaj jest:

  • Wewnętrzna karta graficzna jest odpowiedzialna za zarządzanie obrazem (bitmapą), który jest faktycznie wyświetlany
  • Domyślnie wszystko jest renderowane na wewnętrznej karcie graficznej
  • Aplikacje przyspieszane przez GPU używają dyskretnego adaptera graficznego, dane wyjściowe są kopiowane do wewnętrznego adaptera graficznego
  • Dla każdego monitora zewnętrznego wewnętrzna karta graficzna zapewnia „wirtualny” wyświetlacz
  • Wyjście do monitorów zewnętrznych odbywa się za pomocą drugiego serwera X, zawartość z ekranów „wirtualnych” jest stale kopiowana na drugi serwer X

Główną zaletą w porównaniu z innymi rozwiązaniami jest to, że wszystkie wyświetlacze są (pozornie) częścią tej samej sesji X, dzięki czemu można swobodnie przenosić okna między wyświetlaczami.

Do tej pory nie zauważyłem żadnej utraty wydajności.

Instrukcje

Musisz wykonać następujące czynności:

  • Zainstaluj Bumblebee z PPA
  • Zbuduj i zainstaluj niestandardowy sterownik wideo Intel
  • Pobierz, skompiluj i wreszcie zainstaluj mały program
  • Edytuj dwa pliki konfiguracyjne
  • Uruchom ponownie kilka razy

Do większości działań potrzebny jest terminal, edytor tekstu i dostęp do konta root ( sudo). Szczegółowe instrukcje podano poniżej.

Zainstaluj Bumblebee

Postępuj zgodnie z sekcją „Konfiguracja podstawowa” instrukcji . Wykonaj jako root, ostatnie polecenie faktycznie inicjuje ponowne uruchomienie:

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

Czy nie próbujesz uruchomić trzmiela tylko z nowym sterownikiem? . Z mojego doświadczenia wynika, że ​​to nie działa, przynajmniej nie w tej konfiguracji.

Uprawomocnienie

Powinieneś być w stanie biec optirun glxgears.

Zainstaluj łataną wersję xserver-xorg-video-intel

Opcja 1: Zainstaluj z mojego PPA (obecnie tylko Ubuntu 13.04)

Wykonaj następujące czynności jako root:

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

Opcja 2: zbuduj i zainstaluj własny pakiet

Wybierz najnowszą łatkę dla xserver-xorg-video-intel. Kliknij plik, kliknij przycisk „Raw”, skopiuj adres URL w przeglądarce. W momencie pisania tego tekstu było to 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

Sprawdzanie poprawności (1) dla obu opcji

Komenda

apt-cache policy xserver-xorg-video-intel

powinien pokazywać łataną wersję ( +virtualsufiks) i oryginalną wersję Ubuntu.

Niezbędny do 13.04, dla obu opcji

Dodaj następujące elementy do /etc/X11/xorg.conf, w razie potrzeby utwórz:

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

Sprawdzanie poprawności (2) dla obu opcji

Po ponownym uruchomieniu uruchom xrandrw terminalu. Dane wyjściowe powinny zawierać dwa dodatkowe wirtualne wyświetlacze.

Pobierz i zbuduj screenclone

Pobierz rozwidlenie puetzk z screenclone i jego zależności i skompiluj je.

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

Uprawomocnienie

Plik screencloneistnieje i jest wykonywalny. (Jednak nie będzie jeszcze działać.)

Edytować xorg.conf.nvidia

  • Otwórz plik /etc/bumblebee/xorg.conf.nvidiaw edytorze tekstu jako root
  • Skomentuj lub usuń wiersze, które czytają UseEDIDlubUseDisplayDevice
  • W Section "ServerLayout"dodaj wpisScreen "Screen0"
  • Na dole pliku dodaj:

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

Testowanie

Moja konfiguracja zakłada monitor poziomy podłączony do pierwszego portu DVI stacji dokującej i portretu podłączonego do drugiego portu DVI. Uruchom następujące polecenia w terminalu z katalogu, w którym znajduje się screenclone , w razie potrzeby dostosuj.

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

Zwróć uwagę, jak obrót wyświetlacza musi być zdefiniowany dwukrotnie. Możesz pominąć drugie wywołanie, xrandrjeśli rotacja nie jest pożądana (i oczywiście --rotate leftprzy pierwszym wywołaniu).

Po zakończeniu screenclonez Ctrl + C (który został ponownie umieszczony na pierwszym planie za pomocą fg) dyskretna karta graficzna zostaje wyłączona. Możesz to zweryfikować za pomocą cat /proc/acpi/bbswitch. Mimo to miejsce na ekranie jest zarezerwowane dla dwóch odłączonych teraz monitorów. Aby przełączyć się z powrotem tylko na wyświetlacz laptopa, użyj

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

Sprzątać

  • Skopiuj screenclonedo katalogu, który znajduje się w PATH(np. /usr/local/bin)

  • Utwórz bashskrypt, aby zautomatyzować uruchamianie i zamykanie zewnętrznych wyświetlaczy. Ten skrypt skonfiguruje zewnętrzne wyświetlacze przy uruchomieniu i przełączy się na wyświetlacz laptopa tylko przy wyjściu (np. Naciskając 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
    
  • Opcja alternatywna: Moja kolekcja skryptletów zawiera dwa skrypty, extmon-startoraz extmon-stop, że włączanie i wyłączanie drugi i trzeci monitor. Edytuj extmon-startskrypt, aby dopasować go do konfiguracji.

Bibliografia

Moja odpowiedź w dużej mierze czerpie z następujących zasobów:


Działa mi to naprawdę dobrze, dziękuję. Czy masz problemy z dużym opóźnieniem podczas korzystania z wirtualnych komputerów stacjonarnych i Compiz z tym rozwiązaniem?
damon

@blackrobot: Używam Gnome Shell, istnieje pewne niewielkie opóźnienie, ale to mnie nie niepokoi.
krlmlr

@krlmlr: czy jest jakaś szansa na uzyskanie tej samej konfiguracji 13.10?
flx

@flx: W 13.10 „wirtualne” CRTC są wbudowane w xorg-xserver-video-intelsterownik podstawowy, nie trzeba używać mojego PPA ani łatki. Nie trzeba też edytować xorg.conf, „wirtualne” CRTC są tworzone na żądanie. Reszta powinna być podobna. Istnieje teraz nawet narzędzie, które zastępuje screenclone, nazywa się intel-virtual-outputi integruje płynniej z konfiguracją wyświetlania pulpitu. Zrobię odpis, kiedy dostanę konfigurację trójgłowicy z rotacją, aby działała poprawnie.
krlmlr

1
@flx: Musisz dodać tryb ( xrandr --newmode; cvtnarzędzie pomaga w obliczeniu modeliny) i przypisać go do wirtualnego wyświetlacza ( xrandr --addmode). Tryb powinien odpowiadać trybowi rzeczywistego wyświetlacza. Sprawdź, czy drugi wirtualny wyświetlacz jest tworzony automatycznie. To intel-virtual-outputsamo robi samo narzędzie i wygląda na to, że ostatnie problemy zostały naprawione lub będą niedługo.
krlmlr

2

Nie wiem o T420S, ale mój T420 może pracować z 9 godzinami

  1. Monitoruj ciemność
  2. nvidia wyłączona z trzmiela / bbswith
  3. i dodatkowe strojenie za pomocą pm-utils

I tak, to jest domyślna bateria. Powinieneś więc z łatwością dostać 2 godziny, więc:

(2) W /etc/X11/xorg.conf Wypróbuj z opcją „ConnectedMonitor” „DFP-0” dla sterownika nvidia.

(3) Aby użyć drugiego wyświetlacza, potrzebujesz zmodyfikowanego trzmiela xorg.conf Zobacz szczegóły na https://github.com/Bumblebee-Project/Bumblebee/issues/77 .


1
Dzięki za odpowiedź. Czy zrozumiałem, że nie używasz drugiego ekranu (DVI)? Szczerze mówiąc: uważam, że niezwykle trudno jest mi rozwiązać problem, który połączyłeś - z pewnością spróbuję, ale zajmie mi to kilka godzin, zanim będę miał choć trochę pojęcia, co mam zmienić (i dlaczego). Właściwie to mój laptop do pracy i chcę, żeby działał. Miałem nadzieję, że zadanie takie jak podłączenie drugiego wyświetlacza nie zmusi mnie do przejrzenia otwartych problemów z oprogramowaniem, o którym nawet nie słyszałem tydzień temu ... :-(
Jan Groth

Jest to naprawdę proste, jak w przypadku github, wystarczy usunąć linie (nowa linia) Opcja „UseEDID” „false” (nowa linia) Opcja „ConnectedMonitor” „DFP” (nowa linia) z /etc/bumblebee/xorg.conf.nvidia i trzmiela za pomocą produkować dane wyjściowe na Display Port. Na początku otrzymasz puste zdjęcie. Możesz dostać na przykład xterm z eksportem DISPLAY =: 8.0 (nowa linia) xterm. (wtf naciskając enter tutaj przesyła komentarz zamiast tworzyć nowy wiersz)
Anonimowy Tchórz

2

Używam T420 w pracy ze stacją dokującą typu 4438. Jestem w stanie używać dwóch monitorów szerokoekranowych (bez głównego monitora) lub 1 monitora szerokoekranowego z głównym monitorem za pomocą portów DVI na stacji dokującej.

Właśnie wyłączyłem optymus i ustawiłem go tak, aby zawsze używał karty NVIDIA. Następnie uruchomiłem nvidia-xconfig i użyłem ustawień nvidia do skonfigurowania podwójnych monitorów, zapisałem ustawienia w pliku xorg.conf i ponownie uruchomiłem komputer.

W ten sposób jestem w stanie uzyskać nieco ponad 2 godziny pracy na cieście (bez żadnych innych modyfikacji, które pozwoliłyby na dłuższą żywotność baterii). Główny problem, jaki mam, polega na tym, że nie przełącza się on automatycznie na jeden monitor po ponownym uruchomieniu od stacji dokującej lub usunięciu ze stacji dokującej. Nie miałem jednak czasu, żeby się tym przyjrzeć.

Będę próbował w tym tygodniu Bumble Bee, aby sprawdzić, czy uda mi się go uruchomić. Postaram się pamiętać, aby opublikować tutaj, jeśli mogę go uruchomić.


2

Mam ten sam problem. Przeprowadziłem badania i częściowo je rozwiązałem. Nadal pracuję nad kompletnym rozwiązaniem.

Sprzęt: Thinkpad T420 z Nvidia 4200M + stacja dokująca do grafiki Intel HD 3000 Thinkpad.

Objaw: T420 nie może rozpoznać zewnętrznego wyświetlacza podłączonego do dowolnego portu DVI w stacji dokującej. Może rozpoznać zewnętrzny wyświetlacz przez port VGA na stacji dokującej. Jednak jakość jest niska.

Główna przyczyna: 1. T420 ma kartę Nvidia podłączoną do portu DVI, a kartę Intel do portu VGA w stacji dokującej. 2. W przeciwieństwie do Win 7, Ubuntu nie może przełączać się między kartą Nvidia a kartą Intel. Domyślnie używana jest tylko karta Intel.

Rozwiązanie: 0. Umieść T420 w stacji dokującej i podłącz zewnętrzny wyświetlacz do portu DVI. 1. Przejdź do BIOS, znajdź „Display”, zmień konfigurację na „Discrete Card” i „Disable Nvidia Optimus”. Teraz T420s jest zmuszony używać karty Nvidii. 2. Pobierz i zainstaluj sterownik Nvidia dla systemu Linux. Google szczegółowe instrukcje. 3. Po instalacji wykonaj „sudo nvidia-settings”. 4. W wyskakującym oknie „X Server Display Configuration” kliknij „Detect Displays”. Teraz będziesz mógł zobaczyć zewnętrzny wyświetlacz. 5. Na tej samej stronie zmień Konfiguracja na „TwinView”, Rozdzielczość „Auto” lub natywną rozdzielczość T420, powiedzmy 1600x900. 6. Kliknij „Zastosuj”, aby wyświetlić zewnętrzny pulpit wyświetlacza. 7. Kliknij „Zapisz w pliku konfiguracji X”.

[Aktualizacja]

Korzystając z dispera, mogę ręcznie przełączać wyświetlanie T420 i wyświetlacza zewnętrznego. Nadal nie jest to najlepsze rozwiązanie, ale myślę, że jest dla mnie wystarczająco dobre.

Wypróbuj więc dyskretną grafikę Nvidii + połączenie dyspersji.


... problem z dyskretną kartą polega na tym, że bardzo szybko
rozładowuje

Powinieneś być w stanie korzystać z portu wyświetlacza w trybie nvidia optimus, używając metody opisanej tutaj: zachstechnotes.blogspot.com/2012/04/post-title.html W ten sposób możesz uzyskać dobrą żywotność baterii i korzystać z zewnętrznego monitora na port wyświetlania (będziesz jednak renderował za pomocą karty Intel, więc jakość może nie być tak dobra, jak byś chciał
Zach.

1

Wyjście VGA na moim T520 działa świetnie (nie jest rozmazane) przy użyciu zintegrowanej grafiki (ustawienie Intel BIOS), ale muszę ustawić monitor 1920x1200 tak, aby wyświetlał tylko 1600 pikseli szerokości, aby uzyskać czarne paski po obu stronach. Bez tego ustawienia monitor rozciąga się na 1600 pikseli na całym ekranie 1920 i tak, rzeczy wyglądają na rozmyte.

Kilka dni temu zadałem podobne pytanie i nadal nie rozumiem tych odpowiedzi. Wygląda na to, że @Anonymous Coward działa tylko na zewnętrznym monitorze, ale ja (i wierzę, że OP) chcę móc wyświetlać ekran laptopa (na platformie Intel) i monitor zewnętrzny przez DisplayPort / DVI (na nvidii). Myślę więc, że może być wymagany Optimus / Bumblebee.

Jeśli wymyślę ten problem z wyświetlaniem, z pewnością opublikuję moje odkrycia; zrób to samo, jeśli dotrzesz do mety jako pierwszy.


1
Dzięki za odpowiedź! Jeśli zmniejszę rozdzielczość mojego monitora zewnętrznego do 1600x1200, wyświetlacz staje się jeszcze gorszy ... BTW, obwiniam producenta wyświetlacza za rozmycie - usłyszałem kilka historii, że źródła wejścia analogowego mogą być obecnie dość niskie, ponieważ wszyscy wykorzystuje połączenia cyfrowe. Aha, i na pewno będę aktualizować ten bilet.
Jan Groth,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.