# Thinkpad T410i troubleshooting resume from S3



## mko (Mar 11, 2015)

As a side project I have decided to try and get (Free)BSD running on one of my laptops, I figured this would be a good way to get some experience with FreeBSD. After taking inventory of the available hardware I figured that a Lenovo Thinkpad T410i should be suitable. 

Specs:
i3 330M 
8GB DDR3 ram (2x 4GB)
Intel IGP (IronLake/Arendale?)
128GB Crucial M4 SSD
FreeBSD 10.1 Release   
My primary goal is to get suspend/resume working. In the past I've tried to get suspend resume working on a different laptop with PC-BSD, this eventually worked albeit somewhat unreliable. 
With this current laptop I am having more difficulties but I figured trying to solve this would be a good learning experience. 
Currently I have installed FreeBSD 10.1 Release and stripped the kernel down a lot to eliminate as many factors as possible. In my kernel configuration I have commented out: USB, Networking, SCSI and other unnecessary devices. 

Currently when I run `acpiconf –s3` the system does go to sleep, ending with a blinking power led.
Whenever the power button is pressed the system does indeed wake up but the screen (backlight) remains off. 
The system does however work because when I press the powerbutton or type in `reboot` the system does gracefully shutdown before staying off or booting again. 

I initially tried suspend and resume with the vesa drivers, the screen backlight did come on but there was no video output. I did not manage to resolve this issue with sysctl tuning. I only really tried setting the `sysctl hw.acpi.reset_video=` to 1 or 0 and manually typing `kldunload` and `kldload vesa.ko` when the screen was blank.  
After rebuilding the kernel without VESA support and loading i915 through /boot/loader.conf
I tried suspending again, suspend still worked as expected, resuming however resulted in the previously described black screen without working backlight. 

Now what is more troublesome is that whenever I tried suspending and resuming from vty 2 the system would reboot when trying to resume. This behavior does not occur when using the generic kernel with VESA driver, so I will need to do some more testing to pinpoint if this behavior is i915 related or if it occurred due to my custom kernel.

So why did I make this topic? I would like to receive some input or advice about where my focus should be. 

Should I focus on getting suspend to ram initially working with the VESA driver or the Intel driver? 
Would it be wise to try running 11 CURRENT or FreeBSD Stable instead of RELEASE? 
Does anyone have any other resources I should consult or a smart way to proceed with testing?
To clarify my request about a smart way to proceed testing: I have noticed that it can be hard to keep track of the effects of my changes in multiple files. I have often noticed that a certain combination of settings in the .conf files and even the build options for the kernel can result in unexpected behavior. 
I have tried to supply comments with my changes and to write down my steps but it is quite hard for me with my severely limited FreeBSD knowledge to pinpoint to pinpoint a breaking change or conflicting setting. Does anyone have any tips regarding this issue. 

My next step for this evening will be trying a PC-BSD image based on 11.0 CURRENT. 
I have used the following resources while trying to find a way to get suspend and resume working. 

http://www.thinkwiki.org/wiki/Insta...d_T400#Sleeping_and_Awaking:_suspend.2Fresume
https://wiki.freebsd.org/DebuggingSuspendResume
https://wiki.freebsd.org/SuspendResume
https://forums.freebsd.org/threads/finally-some-success-with-suspend-resume.48754/#post-280328
https://cooltrainer.org/a-freebsd-desktop-howto/#new-installations


----------



## sag (Mar 14, 2015)

The first thing you should do is switch to the new console. I have a Thinkpad T410 with suspend/resume working well on FreeBSD 10.1-RELEASE with the GENERIC kernel and Intel driver. Put all the tweaks you've tried so far back to defaults, make the following change and reboot:

Add to /boot/loader.conf

```
kern.vty=vt
```
While you're at it, here are a few more tips. Also add to /boot/loader.conf

```
acpi_ibm_load="YES"
```
to get several of the "special" keys working. For example, press Fn-F4 to suspend, Fn to resume. See `man acpi_ibm`for more information.

Add to /etc/sysctl.conf

```
hw.acpi.lid_switch_state=S3
```
to suspend on lid close, lifting the lid resumes.


----------



## mko (Mar 17, 2015)

Thanks for your reply.
Last weekend I installed PC-BSD 10.1.1, suspend resume is working fine so I plan to compare the differences between vanilla FreeBSD and PC-BSD starting with the video drivers.
Next weekend I will continue with trying to get my FreeBSD install to work I think your suggestion about switching to vt(4) might be the missing piece in my configuration.

I had already loaded the acpi_ibm(4) module but thanks for the advice anyway.


----------



## sz5sz (Aug 28, 2015)

mko for me solution on thinkpad x61s was just to add

```
hw.acpi.reset_video="1"
```
to /etc/sysctl.conf to the options mentioned by sag
Only caveat is than sometimes after waking up I need to use ALT+Fn to move to one of the consoles.
Works in Xorg & text only.
Fresh install of FreeBSD-11.0-CURRENT-amd64-20150826-r287169-memstick
Solution found on
http://www.thinkwiki.org/wiki/Probl...ic_.28and_possibly_other.29_chips_and_FreeBSD
Thanks sag & mko


----------

