Zapnutie ultrabay na Thinkpade T420

Sekcia: Hardware a Drivery 19.06.2020 | 08:36
Avatar Miroslav Bendík Gentoo  Administrátor

Ahojte. Na thinkpade T420 by som chcel mať možnosť vypnúť a zapnúť ultrabay mechaniku bez reštartu a chodenia do biosu.

Vypnutie je jednoduché, stačí zápis do súboru /sys/bus/platform/devices/dock.1/undock. Reverznú operáciu (dock) som nenašiel, takže po vypnutí je mechanika mŕtva kým ju nevytiahnem z notebooku a znovu nezapojím.

Zápis do spomenutého súboru spustí ACPI metódu _SB.PCI0.SAT1.PRT1._EJ0 s parametrom 1. Skúšal som ručne spustiť metódu s parametrom 0 (echo "\_SB.PCI0.SAT1.PRT1._EJ0 0" > /proc/acpi/call), ale nič sa nestalo.

Príslušné dekompilované Intel ACPI Source Language (ASL) tabuľky prikladám v súbore.

Je možné mechaniku naštartovať softvérovo?

    • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 08:48
      Avatar debian+   Návštevník
      • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 10:03
        Avatar xza   Návštevník

        V tom linku sa riesi monitor. Skus si to nabuduce precitat pred pastnutim.

      • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 11:03
        Avatar Miroslav Bendík Gentoo  Administrátor

        Dockd počúva na acpi event, ktorý v mojom prípade príde len keď odpojím a pripojím mechaniku. Ja potrebujem donútiť bios, aby znovu preskenoval zariadenia bez fyzického odpojenia.

        • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 12:03
          Avatar debian+   Návštevník

          O to sa stara kernel (prebera kontrolu nad hardverom a BIOSOM).

          • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 12:05
            Avatar debian+   Návštevník

            Linux kernel prebera plne nahradza BIOS pri spustani.

            • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 13:00
              Avatar Miroslav Bendík Gentoo  Administrátor

              Linux nenahrádza BIOS/UEFI. Ten beží stále nad operačným systémom a dá sa s nim komunikovať cez ACPI rozhranie. Kernel pri undock requeste zavolá metódu _EJ0 príslušného podsystému v ACPI. V tom momente preberá riadenie BIOS/UEFI a tu sa dostávame k dekompilovanému kódu, ktorý som priložil. Ak zavolám metódu eject (_EJ0) s parametrom 0 čakal by som, že urobí reverznú operáciu ejectu, ale to nerobí. Podľa kódu mám pocit, že by sa to malo dať poslaním špeciálneho kódu pre embedded controller a následným obnovením napájania pre SATA ak to EC neurobí automaticky.

    • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 11:46
      Avatar Miroslav Bendík Gentoo  Administrátor

      Doplňujúce informácie:

      Metóda \_SB.PCI0.SAT1.PRT1._EJ0 podľa ssdt3.dsl volá \_SB.PCI0.LPC.EC.BEJ0

      Method (_EJ0, 1, NotSerialized)  // _EJx: Eject Device, x=0-9
      {
          \_SB.PCI0.LPC.EC.BEJ0 (Arg0)
      }

      Tá je definovaná takto, ale neviem, ktorá časť je zodpovedná za vypnutie radiča a ani ako ho znovu zapnúť.

      Method (BEJ0, 1, NotSerialized)
      {
            If (Arg0)
            {
               BDIS ()
               \BHDP (0x01, 0x00)
               BSTS = 0x01
               If (BHKE)
               {
                  BHKE = 0x00
                  \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x3003)
               }
            }
            Else
            {
               BSTS = 0x00
            }
      }

      Evidentne však v podmienke else, kde by sa mal znovu inicializovať robí omnoho menej.

      • RE: Zapnutie ultrabay na Thinkpade T420 19.06.2020 | 12:01
        Avatar bedňa LegacyIce-antiX  Administrátor

        Otočil by som sa na tohoto človeka, s tým ti mi bežní smrteľníci ťažko pomôžeme.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org