Debian 11 és Bumblebee ThinkPad P50-en

Sziasztok!

Frissítettem a rendszerem Debian Bullseye-ra a ThinkPad P50-emen, igyekszem leírni a tapasztalataimat, különösképpen a külső monitorok stabil meghajtására nézve.

Alvó mód

Az első problémám az új rendszerrel az volt, hogy nem tudtam elküldeni a gépet alvó módba - a bekapcsolást jelző LED elkezdett villogni, ventilátor üzemelt, majd leállt, némítást jelző LED-ek még világítottak, de a gép lefagyott és csak újraindítás segített rajt.
Némi keresgéléssel arra jutottam, hogy újabb kernelek esetén, aktív TPM mellett nem működik ez az üzemmód, ha a megfelelő funkció nincs belefordítva a kernelbe.
Mivel amúgy sincs szükségem a TPM-re, letiltottam UEFI alatt, ezt követően működni kezdett a alvó mód is.

...vagyis egészen addig működött, amíg nem indítottam el az nvidia kártyát és maradt ebben az állapotban.
Ilyenkor elment ugyan aludni, de az ébredés nagyon lassú volt és következő alkalommal aludni sem ment már el (vagy nem bírtam kivárni).
Emellett volt olyan alkalom, hogy közvetlen indulás után is hasonlóképpen nem működött az alvó mód.

Feltűnt, hogy akkor van probléma, ha az nvidia és az nvidia_modeset modul be van töltve, és olyankor működik jól, amikor nincsenek.
...viszont volt olyan eset, amikor nem tudtam őket eltávolítani. Az nvidia eltávolásánál rmmod arra hivatkozott, hogy nvidia_modeset használja, utóbbit pedig valami más foglalja le.
Kiderült, hogy ez a más egy úgynevezett "nvidia-persistenced" nevű szoftver, amit a saját tárolóból telepített nvidia driver magától behúz, de érdekes módon valahogy nem mindig indul el.

Ezt a csomagot eltávolítottam, hogy ne üljön rá a kártyára, és így már jobbára működött is a sleep.

Bumblebee

Nekem a Bumblebee és az nVidia kártya leginkább azért kell, mert erre van kötve gyakorlatilag az összes video kimenete a gépnek, én viszont használnám akkumulátorról is, ekkor viszont az nVidia kártya jobb, ha ki van kapcsolva...

...szóval Bumblebee konfigurációjában beállítottam a "KeepUnusedXServer" flag-et true-ra, ugyanis azt tapasztaltam, hogy csatlakoztatott monitort üzem közben eltávolítva egyébként meg tud borulni a rendszer (ez valószínűleg korábban is így volt), ezzel az opcióval viszont nincs ilyen gond.

Emiatt viszont az nVidia kártya és a számára indított külön X szerver folyamatosan futni fog.
Erre azt találtam ki, hogy a bumblebeed daemonnak újraindítási parancsot adva szépen elvégzi a kártya lekapcsolását és a plusz X szerver lelövését is, így tehát használat után le lehet azt kapcsolni.

Adott monitor inicializálásához készítettem néhány egyszerű "script" fájlt, hogy ne kelljen minden alkalommal kattintgatni.
Így néz ki valahogy:

#!/bin/bash

if [ "$(cat /proc/acpi/bbswitch)" == "0000:01:00.0 OFF" ]; then
    intel-virtual-output
fi

for i in {0..50}
  do
     if [ "$(cat /proc/acpi/bbswitch)" == "0000:01:00.0 ON" ]; then
         xrandr --output VIRTUAL5 --right-of eDP1 --auto
         break

     else
         sleep 0.1
     fi
 done

Valószínűleg a ciklusra nincs szükség, mert az intel-virtual-output megvárja a kártya bekapcsolását, de ez bent maradt (néhányszor kellett hard reset a gépemnek emiatt és nem szeretem ezt a fajta kísérletezést)...

Az intel-virtual-output újbóli lefuttatása nem okozna nagy problémát, viszont létrehoztam több, hasonló scripttet, amik más helyre definiálják az adott monitort, és megszűnik a kép a monitoron, ha az intel-virtual-output aktív kimenet mellett is meghívásra kerül.

...viszont, ha egy monitor később csatlakozik a géphez mint a kártya aktiválása, akkor szükség van az intel-virtual-output újbóli meghívására ahhoz, hogy felismerje a gép...
...vagy alternatívaként a kimenet lekapcsolása és újbóli aktiválása is megoldja ezt a kérdést.

Lekapcsolni valahogy így kapcsolom pillanatnyilag:

#!/bin/bash
xrandr --output VIRTUAL5 --off
sleep 0.5 && sudo /etc/init.d/bumblebeed restart >> /dev/null

Volt egy másik problémám is fent, miszerint betöltött nvidia modul esetén nem működik jól a sleep.
...ebből következik, hogy használat után az nvidia kártyát nem lehet, hanem le kell kapcsolni.

Alapvetően ezzel nem lenne gond addig, amíg mindig lekapcsolom a kártyát használat után és véletlenül sem küldöm a gépet aludni, amíg ez nem történt meg (vagy akár aktív külső monitor mellett).
Egy hiba, és nyögvenyelősen indul a gép (ha egyáltalán indul), és újra altatni már nem fogom tudni.
Ez nem túl jó dolog, ha egy nyitott projekten dolgozna épp' az ember és nem szívesen zárogatna be mindent, hogy legközelebb újra felépítse a munkakörnyezetet - emiatt is megy inkább sleep.

Systemd

Tehát azt kellene elérni, hogy alvó módba kapcsolás előtt lefusson a lekapcsolást végző kódsor.
A pm-utils segítségével ez valahogy így nézne ki a /etc/pm/sleep.d/ könyvtárban elhelyezve:

#!/bin/bash

case "$1" in
suspend|hibernate)
    /etc/init.d/bumblebeed restart && sleep 2
    ;;
resume|thaw)
    ;;
esac

...csakhogy már nem ezek az idők járnak, és a KDE/Plasma, amit használok, valami egészen mást hív meg.

Mivel KDE alatt nem találtam lehetőséget arra, hogy hajtson végre egy kódsort elalvás előtt, jobb híján a systemd-vel próbáltam elérni, hogy ez megtörténjen.
A /etc/systemd/system/ könyvárban létrehoztam egy bumblebee_stop.service fájlt a következő tartalommal:

[Unit]
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/bumblebeed stop
ExecStartPost=/bin/sleep 2
[Install]
WantedBy=sleep.target

Ezt követően kiadtam a systemctl daemon-reload és systemctl enable bumblebee_stop "parancsokat", majd próba.

Az 1-2 másodperc várakozásra azért van szükség, mert ugyan a bumblebeed megkapja a leállítás parancsot, de maga a folyamat (hardver leállítása) hosszabb ideig tart, és, ha nem végez vele a sleep funkció aktiválódásáig, akkor nem fog működni a kártya felébredést követően.

Az igazsághoz hozzátartozik, hogy bumblebeed stop helyett restart-ot szerettem volna kérni, de ebben az esetben is csak leállásig jutott valamiért.
Ugyanakkor (ha jól értettem), ExecStop segítségével lehetne ebben a fájlban is felébredés utáni végrehajtást kérni, de elindítani így sem sikerült - igaz, a systemd automatikusan újraindítja kb. 1 perccel később, így ennek még nem jártam utána.

Végszó

Ebben a formában sikerült eljutnom oda, hogy meg tudom hajtani a külső kijelzőket, és stabilan működik a sleep akkor is, ha aktív kimenet mellett állítom le a rendszert valamiért.

Gondoltam, leírom a fentieket, hátha hasznára lesz valakinek, de nyugodtan írjátok le a véleményeteket, ha valamit szebben/jobban is meg lehet oldani. :)

Hozzászólások

Ez a linuxos eleterzes mit sem valtozott az elmult 22 evben miota hasznalom.

En konkretan utalok frissiteni. Be van minden allitva, minden mukodik, minek rontsam el?

Pl. a kozepso egergombbal beillesztes nem mukodik wayland alatt. Pedig en 2 clipboardot hasznalok rendszeresen.

(pl. hogy mashogy cserelsz ki egy szoveget gyorsan? egyiket beteszed a primarybe a masikat a secondarybe es meg is vagy).

 

Ha a suspend-resume nem mukodne, a guta is megutne helybol.

Volt ugy, hogy nem ment asztali gepen vagy 15 eve, es akkor is az nvidia drivertol fagyott szejjel. Jah igen utana egy laptopon se ment ami geforceos volt akkor is, de az 2010 kornyeke.

 

ahh, zart driverrel csak a szivas van....

Bocsi, de kikivankozott...

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Nem véletlen vártam eddig a frissítéssel... kellett hozzá kb. egy nap, hogy újra stabilnak érezzem a környezetet, beleértve az nVidia-val vacakolást...
Amikor legutóbb néztem a nyílt nouveau drivert, nem voltam elragadtatva tőle... ez a video (Quadro M2000M) meg még rendesen támogatott, nvidia-detect szerint a legújabb verzió által is...

...mondjuk eleve ez a módi sem tetszik, hogy az Inteles vezérlő a legtakarékosabb, de minden kimenetet gyakorlatilag az nVidia vezérlőre huzaloztak, és majd a bufferek között másolgatunk, hogy működjön is...
Mondjuk meg tud hajtani három 4k-s kijelzőt is (a sajátja is 4k), bár ebben a felállásban elméletileg csak 30 Hz-et tud - gyakorlatilag fel tudom kapcsolni 60 Hz-re, gyorsabb is lesz (egérkurzor pl. elég folyamatos), de nem bírja teljes gőzzel adagolni.

Amit nagyon hiányolok, az a per monitor scaling.
A rendszeren beállítottam a skálázást 150%-ra, de így FullHD-s kijelzőt csatlakoztatva használhatatlan lesz... persze xrandr-al lehetne skálázni, megy is a saját kijelzőn (csak némileg rosszabb képminőséggel), de a külső monitoron persze nem tudja megcsinálni, mert az nVidia vezérlőn egy külön X fut...
...de amúgy az Intel sem feltétlen van a csúcson, Optimus csak az "intel" driverrel működik...

Állítólag Wayland-nál működik a monitoronkénti skálázás funkció, de egyrészt, ahogy néztem, KDE-nél még experimental a támogatása, másrészt attól is félek kicsit, ha majd váltani kell rá...

Egyébként a 4k jól tud jönni időnként, pl. ki lehet tenni rá egy kapcsolási rajzot nagyobb terjedelemben úgy, hogy finomabb részletekre sem kell feltétlen nagyítani, hogy olvasható legyen.

Mindenesetre most cirka két évig "pihenés" van, a rendszer addig stabilan teszi a dolgát... suspend/resume, ill. hibernálás is jól működik.
A hybrid suspend-et nem mertem kipróbálni, bár KDE-nél nem, csak pm-utilsban láttam.
Adatmentést megcsinálta, elment alvásba, onnan visszajött, egyelőre tápot nem mertem kihúzni alóla ebben az állapotban. :)

P50 - milyen gép?

Lehet veszek magamnak otthonra egy laptopot. Előbb egy ideapad 3-as jött szembe 160-ért, most meg egy P50-est láttam 180-ért.

Ami mindkettőnél hiányzik szerintem az a billentyűzetvilágítás.

Az ideapadnál tetszett, hogy a kurzor billentyűkön ott van egyből a PgDn stb., viszont mintha a P50 komolyabb anyagból készült volna, hiába régebbi.

A P50-nek szerintem van hattervilagitasa. Ugyanolyan billentyuzete van, mint az enyemnek (T sorozat az enyem), es a honlapon is ugy irjak.

Ha igaz, akkor a hattervilagitas hardverbol van, azaz OS fuggetlen. 3 allasa van: ki, alacsony, es nagy fenyero.

 

Szerk: nem tudom hol jott veled szembe 180-ert, de ha nem lopott engem is erdekelne. A neten meg most is 800+eFt-ba kerul.

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Szerintem jó és strapabíró gép.
Talán az egyik utolsó, aminek még van rendes dokkoló csatlakozója is.

Egy Type-C csatlakozója szintén van, ezen képes video jelet is kiadni, de ez a gép megtáplálására nem alkalmas.
Újabb gépeknél már jellemzően lehet Type-C csatlakozáson keresztül tápot adni, én "hack-eltem" hozzá egy kábelt és megfelelő tápot, de kicsit vissza kell vennem a prociból, hogy minden körülmények között 100W PD-n belül tudjak maradni, utazó tápnak használom így - gyári tápja 170W-os, ha jól emlékszem, 130W-os kell neki minimum...

Aksi üzemidejével abszolút elégedett vagyok - cirka 3-4 órát elvagyok vele (nem különösebb terheléssel), de ez is egyszerűen cserélhető ebben még.
Van webkamerája (nálam legalábbis), ennek mostanság nagyobb hasznát lehet venni... valamint tetszik, hogy van egy dedikált billentyűm a mikrofon némítására is (ehhez xbindkeys-el rendeltem funkciót anno).

Nekem világító billentyűzetem van, igaz, ezt külön vásároltam hozzá és talán német kiosztású... a fényereje két fokozatban állítható (ellenben a korábi Dell-emmel, ahol egész finoman lehetett állítani), és nem jegyzi meg az állapotát, kikapcsolva indul, ill. alvó üzemmódnál elfelejti. 
Ez Linux alól egyszerűen kezelhető /sys/class/leds/tpacpi::kbd_backlight/brightness írásával (0, 1 vagy 2), ezt meghívom ébredéskor - ha lekapcsol a kijelző, elalszik a billentyűzet is, de ilyenkor automatikusan vissza is kapcsolja touchpad / billentűzet inputtal.

Egyébként ideálisnak tartom ezt az (ISO?) kiosztást, jól lehet gépelni rajt, és ugye teljes billentyűzet.
A Dell 6530-am billentyűzete volt nagyon hasonló kiosztású.

Egy gyengébbnek tűnő része van a konstrukciónak - nálam az ujjlenyomat olvasó alatt van egy kezdődő repedés, ami miatt szétszedtem és megerősítettem, itt nincs elég alátámasztása.
Ettől eltekintve abszolút stabil a váza, zsanérok is jók és Synaptic touchpad van benne.

Ujjlenyomat olvasót nem próbáltam beüzemelni, ill. ezen van egy Pantone színkalibrációra szolgáló érzékelő is - ezeket nem tudom, mennek-e Linux alatt.
Nem tudom, mindegyikben van-e dedikált video vezérlő - az enyém M2000M-es nVidia-val szerelt, de van M1000M vezérlős is belőle.

Elő van készítve modem fogadására (SIM foglalata van és a sajátomban antenna előkészítés is volt), én egy "Sierra Wireless, Inc. EM7455"-öt tettem bele.
Kijelzőből szintén lehetett tenni bele 4k-sat, ehhez az átvezető kábelt kellett cserélnem.

Nálam két RAM foglalat van használva 16GB-os modulokkal, de van még két másik foglalat is, valamint, két M.2 SSD foglalat és egy SATA is használható rajt együtt(!).
Tehát bővíthetőség elég szépen megoldott lehet.

Arra vigyázz, hogy ezeknél a gépeknél (tulajdonképpen bármelyik modernebbnél) már nem cserélhető a CPU, azzal kell használni, amivel vásárolod...