1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Сон Слип Способы Завода

Тема в разделе 'DSDT', создана пользователем medik, 9 сен 2010.

  1. medik

    medik Технический Специалист Команда форума

    Симпатии:
    3`214
    Чтобы завелся сон готовых решений нет - есть только некоторые наработки:
    Sleepenabler.kext обсуждать незачем так как у этого драйвера два состояния "пашет" или "непашет".

    Я попробую собрать в кучу что накопал в инете, идеи Слайса , Мозо и других.

    Сначала надо завести нативное управление питанием и удалить NULLCPUPowermwnarment.kext - например самым простым способом http://www.applelife...693#entry170693 - но в большинстве случаев этого недостаточно для слипа, лучше исправить так:
    Show Spoiler
    Код:
    
    //В устройстве HPET удаляем условия,
    //у разных плат могут быть отличия -
    
    Device (HPET)
    {
    Name (_HID, EisaId ("PNP0103"))
    Name (ATT3, ResourceTemplate ()
    {
    IRQNoFlags ()
    {0}
    IRQNoFlags ()
    {8}
    Memory32Fixed (ReadWrite,
    0xFED00000,         // Address Base
    0x00000400,         // Address Length
    )
    })
    Name (ATT4, ResourceTemplate ()
    {
    })
    Method (_STA, 0, NotSerialized)
    {
    Return (0x0F)
    }
    
    Method (_CRS, 0, NotSerialized)
    {
    Return (ATT3)
    }
    }
    //в более продвинутом варианте:
    //условия в HPET и RTC надо оставить и дописать "darwin".
    //Но это уже из другой темы.
    
    
    //RTC упрощаем
    
    Device (RTC)
    {
    Name (_HID, EisaId ("PNP0B00"))
    Name (_CRS, ResourceTemplate ()
    {
    IO (Decode16,
    0x0070,             // Range Minimum
    0x0070,             // Range Maximum
    0x04,               // Alignment
    0x02,               // Length - проверьте другое значение 0x08
    )
    })
    }
    
    //Также упрощаем TMR
    
    Device (TMR)
    {
    Name (_HID, EisaId ("PNP0100"))
    Name (_CRS, ResourceTemplate ()
    {
    IO (Decode16,
    0x0040,             // Range Minimum
    0x0040,             // Range Maximum
    0x01,               // Alignment
    0x04,               // Length
    )
    })
    }
    
    
    
    
    Полностью рабочий HPEТ это 80% вероятности что сон заработает.

    Обязательно должно быть полностью заведено видео: Те кто пользуется графикенаблером или Nvenabler при отсутствии PCI-e(P0P0, VGA, PEX5 и др.) секции в DSDT , что нередко, должны добавить в конце Device (PCI0)
    Код:
    Device (PEGP)
    {
    Name (_ADR, 0x00010000) //Адрес может быть другим, смотрим в иореге.
    }
    

    Далее смотрим есть ли в DSDT примерно вот такой код:
    Код:
    Device (PCI0)
    {
    Name (_HID, EisaId ("PNP0A08"))
    Name (_CID, EisaId ("PNP0A03"))
    ........
    
    При отсутствии Name (_CID.... добавляем - во многих случаях этого достаточно.

    Чтобы кнопка питания включала слип находим:
    Код:
     Device (PWRB)
    {
    Name (_HID, EisaId ("PNP0C0C"))
    .......... 
    
    и меняем на
    Код:
     Device (PWRB)
    {
    Name (_CID, EisaId ("PNP0C0C"))
    .......... 
    
    Теперь правим нотификацию устройств таким образом:
    ищем например _SB.PCI0.BR21 или _SB.PCI0.PEX0 или _SB.PCI0.P0P0 это все устройства PCI

    например в Device (PEX0) это первый PCI-e слот и в любом другом должно быть

    Код:
    Method (_PRW, 0, NotSerialized)
    {
    Return (GPRW (0x09, 0x04))
    }
    или гигабайты
    Код:
    Method (_PRW, 0, NotSerialized)
    {
    Return (Package (0x02)
    {
    0x09,
    0x04
    })
    }

    09 это значение для _GPE, через которое устройство сообщает о событии и для каждого устройства это значение разное для группы одинаковое.
    04 это состояние (S4) из которого устройство может "будить комп" бывает 05 и 03
    И смотрим в Scope (\_GPE)
    там должно быть
    Код:
    Method (_L09, 0, NotSerialized)
    {
    Notify (\_SB.PCI0.PEX0, 0x02)
    }
    Видно что к _L добавлено 09 и соответственно в каждои устройство должен присутствовать Method _PRW с нужным значением для _GPE .

    Для USB желательно нотификацию продублировать в Method (_WAK

    Код:
    Notify (\_SB.PCI0.EHC0, 0x00)

    Видеосекция почти у всех прописана без _PRW и прекрасно засыпает и выходит из сна.... [​IMG] да и другие PCI-дивайсы.
    А для USB нотификация обязательна. Как заводить усб подробно расписано в теме Слайса. http://www.applelife...t-патч-для-usb/
    Я заметил что из сна не выходят железки драйвер которых не выгружается обычным kextunload.
    Например кривой драйвер Sil3132_SATAII не выходит полностью из слипа, но по скорости Sil не хуже ICH10 и поэтому:
    -на основном компе у меня уже нет сна, [​IMG] а вот без этого sil3132 сон работает отлично.
    upd......
    - уже есть драйвер для 3132 который нормально выходит из сна.

    Начинать "искать слип" надо с отключения всех дополнительных устройств и драйверов железок при обязательно полностью заведенной видеокарте и нативном поверменагере.
    Способ поиска устройств, которые не дают спать pmset -g assertions http://appstudio.org/tricks/pochemu-ne-rabotaet-rezhim-sna-na-make-il.html
    .........
    Уважаемые участники форума - давайте добавлять сюда весь опыт общения с этим непокорным слипом!
     
    Kulio, Moorre, foood и 12 другим нравится это.
  2. Aleox

    Aleox iНовичок

    Симпатии:
    22
    Привет дружище! ;)
    Вот и правильно что завел сию тему
    Возможные методы для заводки сна на разных платах
    В ней можно собрать все финты и трюки-которые помогают заснуть компу(понятно,что у всех и все по разному,но пусть люди деляться чем возможно)
    Например-плата такая-то....(слип завел метод правки усб + правка повербутон+....еще чего)Пусть высказываются,пишут кто-что знает или случайно откопал
    Это поможет накопить некоторую базу данных и систематизировать этот весьма
    далеко еще темный вопрос
    А так же поможет юзерам на что надо обратить внимание при борьбе со сном



    P.S.И сразу внесу свой маленький вклад -на моей плате ASUS P5QL(с моей конфигой естественно)достаточно для слипа прописать в Device (EUSB)и в Device (USBЕ) метод
    Method (_DSM, 4, NotSerialized),как описано в теме Слайса патч USB
    Show Spoiler

    Device (EUSB)
    {
    Name (_ADR, 0x001D0007)
    Method (_PRW, 0, NotSerialized)
    {
    Return (GPRW (0x0D, 0x04))
    }

    Method (_DSM, 4, NotSerialized)
    {
    Store (Package (0x0B)
    {
    "AAPL,clock-id",
    Buffer (One)
    {
    0x00
    },

    "built-in",
    Buffer (One)
    {
    0x01
    },

    "AAPL,current-available",
    0x04B0,
    "AAPL,current-extra",
    0x02BC,
    "AAPL,current-in-sleep",
    0x03E8,
    Buffer (One)
    {
    0x00
    }
    }, Local0)
    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
    Return (Local0)
    }
    }

    Device (USBE)
    {
    Name (_ADR, 0x001A0007)
    Method (_PRW, 0, NotSerialized)
    {
    Return (GPRW (0x0D, 0x04))
    }

    Method (_DSM, 4, NotSerialized)
    {
    Store (Package (0x0B)
    {
    "AAPL,clock-id",
    Buffer (One)
    {
    0x01
    },

    "built-in",
    Buffer (One)
    {
    0x01
    },

    "AAPL,current-available",
    0x04B0,
    "AAPL,current-extra",
    0x02BC,
    "AAPL,current-in-sleep",
    0x03E8,
    Buffer (One)
    {
    0x00
    }
    }, Local0)
    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
    Return (Local0)
    }
    }


    Выше сказанное подразумевает -что у вас работает нативный спидстеп!!! :D
    Да еще в Method _WAK:
    Notify (\_SB.PCI0.EUSB, Zero)
    Notify (\_SB.PCI0.USBE, Zero)
     
  3. Awock

    Awock iНовичок

    Симпатии:
    4
    Судя по первому посту, в DSDT у меня есть все, что нужно, но из слипа не выходит :(
    Speedstep работает нативно, даже HPET не трогал.
    В логах вообще ничего нет про слип..
    уходит отлично, а вот выходит..только шуметь начинает, экран не загорается.
     
  4. Riggs Martin

    Riggs Martin iЮзер

    Симпатии:
    81
    Awock - товарищ по несчастью с фоксконном.
    Похоже, не видать нам слипа на этих материнках.
    У меня симптомы один-в-один.
     
  5. Awock

    Awock iНовичок

    Симпатии:
    4
    я дал IOReg и DSDT Xmedik'у может, что придумаем :)
     
  6. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    8`350
    Это почему это зеро??? Эта цифра - состояние энергопитания. 0 - сон. 2- работа.
    Метод _WAK от английского слова Wake - пробуждение.
    Вот мой кусочек (со слипом все хоккей!)
    Код:
            Method (_L03, 0, NotSerialized)
    {
    Notify (\_SB.PCI0.USB1, 0x02)
    Notify (\_SB.PWRB, 0x02)
    }
    
    Еще обратите внимание на модель Мака. Не каждая имеет спидстеп, и не каждая спит.
    Моя модель MacBook4,1, но с редакцией ACPI_SMC_PlatformPlugin

    Еще про драйвера. Эппловские тоже не все идеальны.
    AppleIntelGMAX3100FB.kext версии из 10.6.2 не спит в 64битном режиме.
    В моем списке левых драйверов спят все
    AppleACPIPS2Nub - 32/64
    ApplePS2Controller 1.15
    AppleACPIBatteryManager - 32/64
    FakeSMC 2.7.2
    GenericCPUPM
    IOPCIFamily_modded
    IOUSBFamily_modded
    SilentNatit
    VoodooHDA 2.5.x - 2.6.x
    VoodooSDHC - версия от 27 августа 2010
    Ничего не забыл?

    Кстати, есть у меня некоторые опасения насчет легасей. Они-то после пробуждения не будут считываться из Экстры. Не знаю, может из кеша прочитаются.
     
  7. Awock

    Awock iНовичок

    Симпатии:
    4
    а можешь запостить весь WAK метод от GA-965P? железо похожее, может у меня прокатит.
     
  8. гык-sse2

    гык-sse2 Apple Life Dev Разработчик

    Симпатии:
    991
    Еще GMA950. А потом их сделали 32-битными.
    А зачем им считываться? Сами кексты ведь уже загружены. Если только легаси нужны каким-то внешним устройствам, которые могут быть подключены после/во время слипа...
     
  9. apoll

    apoll iПрофи

    Симпатии:
    61
    На P5K(R)слип - выход из слипа заработал только после смены патченного AppleHDA на Родной AppleHDA (на легасях для ALC883) от 10,6,1, и смены сетевой карты AttansicL1Ethernet, на карту на чипе Realtek RTL8169
    До этого времени имел паники на AppleHDA после выхода из сна с последующим ребутом, или шатдауном, и не работающий интернет после сна
    В ДСДТ есть некоторые отличия от описания Xmedik, но сейчас лажи не замечал.
    Тема правильная - нужная.
    зы Из слипа выхожу кнопкой питания на компе (не обламывает), если делаю в ДСДТ выход из сна мыхом, комп может проснуться сам по себе (в винде так-же), может из- за радиомыхи...., а ваще и с клавой так-же
    ДСДТ - кому интересно
    Посмотреть вложение DSDT.dslASUSP5K(R)apoll.zip
     
  10. medik

    medik Технический Специалист Команда форума

    Симпатии:
    3`214
    Привет! :)
    Буду собирать все в кучу.
    И 0 тоже работает но не всегда - ясно что 2 точнее. Лучше сразу поменять на 2.
     
  11. гык-sse2

    гык-sse2 Apple Life Dev Разработчик

    Симпатии:
    991
    Иногда бывает такое из-за всяких там наводок, статического электричества. Для примера - у меня 945 иногда просыпалась от прикосновения флэшкой к корпусу USB-разъема (D+ и D- еще даже не успел дотронуться, потому что флэшку наоборот держал).
    А как вы в DSDT это отключаете?
     
  12. apoll

    apoll iПрофи

    Симпатии:
    61
    Гык, сейчас точно не помню, но по- моему, чтобы выйти из сна клаво-мышем, экспериментировал
    по этой теме (сохранилась ссылка)
    тем слайса
    А отключено было как бы по- умолчанию (просто не работало)
     
  13. ZAFFE

    ZAFFE iНовичок

    Симпатии:
    8
    А можно поподробней?
     
  14. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    8`350
    Вот целиком, со всеми правками. Оп-па! А у меня тоже в методе _WAK стоит зеро, а в _GPE - двойка!
    Посмотреть вложение DSDT_GA965P.zip
     
  15. Aleox

    Aleox iНовичок

    Симпатии:
    22
    Так все же правильно в WAK зеро или двойка( в _GPE везде 2),или все это не важно или должно быть и в WAK и в _GPE двойки :D

    Работает и так и эдак ;)
     
  16. SunKi

    SunKi GURU Гуру

    Симпатии:
    576
    ACPISpec пункт 5.6.5 говорит:

    0 - Bus Check. This notification is performed on a device object to indicate to OSPM that it needs to perform a Plug and Play re-enumeration operation on the device tree starting from the point where it has been notified.
    2- Device Wake. Used to notify OSPM that the device has signaled its wake event, and that OSPM needs to notify OSPM native device driver for the device.

    То есть в _WAK нужно посылать на девайс 0 что-бы ОСь провела заново перебор дерева устройств. То есть шлем на USB и ОСь чекает что же на нем висит.
    В _GPE нужна 2 что-бы ось сказала драйверу устройства что тот шлет сообщение о том что пора проснуться.
     
    Geraldus нравится это.
  17. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    8`350
    5 баллов.
    А не по этой ли причине у кого-то флешки после сна отваливаются, что у них нет зеро в ваке?
    А еще, если подумать, то 0 нужно посылать на всю шину PCI. Однако, это гипотеза.
     
  18. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    934
    У меня такая ситуация: засыпаю, но не до конца (слышна работа кулера процессора и видеоплаты), просыпаюсь кнопкой restart, далее если снова уснуть (комп. засыпает полностью), то могу уже проснуться кнопкой выключения. После того как компьютер проснулся, замечаю, частые мигания светодиода жёстких дисков и так пока не перегружусь, а в остальном работает нормально. Флешка не отваливается - решил проблему перемычками на мат. плате. Да ещё не засыпает по таймеру. Прошу посмотреть DSDT может причина для вас очевидна.
     

    Вложения:

  19. Valera49

    Valera49 iЮзер

    Симпатии:
    30
    Хочу поделиться своим опытом заводки слипа на P5Q может кому пригодится. При попытке отправить в сон происходило кратковременное отключение и тут же выход из сна.
    Я уже знал причину этого явления, мешал картридер(внутренний), потом почитав тщательно руководство пользователя наткнулся на страничку где были описаны переключатели USB, переключил их в другое состояние проверил и все заработало. Конечно все необходимые прописи в ДСДТ имеются. Прилагаю рисунок.
     

    Вложения:

    • P5Q 2.
      P5Q 2.jpg
      Размер файла:
      20.5 КБ
      Просмотров:
      153
    1 человеку нравится это.
  20. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    8`350
    Кстати, мне помог еще вот такой трюк, только не знаю, помог ли кому-то еще.
    http://www.projectosx.com/forum/index.php?showtopic=572&view=findpost&p=2925
     

Поделиться этой страницей