Apple MacBook Pro 13-Inch "Core i5" 2.5 / "Core i7 2.9" (Mid-2012)
Identifiers: Mid-2012 - MD101LL/A* (i5) - MD102LL/A (i7) - MacBookPro9,2 - A1278/2554*
Contents
1. Hardware
Year introduced |
June 11, 2012 |
CPU |
Intel(R) Core(TM) i5-3210M @ 2.50Ghz / i7-3520M @ 2.90Ghz (Ivy Bridge) |
Ethernet |
Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe |
Graphics |
Intel(R) HD Graphics 4000 (integrated GPU with 1.5GB shared memory) |
Memory |
4GB (or 8GB for the i7) RAM DDR3 @ 1600Mhz |
Screen |
LED-backlit 13,3" widescreen TFT active-matrix "glossy" @ 1280x800 |
Wireless |
Broadcom BCM4331 802.11a/b/g/n Dual-Band Wireless |
Sound |
Cirrus Logic CS4206 (Internal Analog 3.1/2.0) |
2. Support overview
Component |
Status |
Details |
|
Graphics |
Graphical sessions |
|
Xorg works out of the box |
Backlight (brightness) control |
|
Requires asmc(4) and acpi_video(4) drivers |
|
Input devices |
Keyboard backlight |
|
Requires asmc(4) and acpi_video(4) drivers |
Touchpad |
|
Requires wsp(4) driver |
|
Media keys |
Brightness keys |
Requires sysutils/asmctl port |
|
Volume keys |
Doesn't work out of the box |
||
Network |
Ethernet |
|
Works out of the box with bge(4) driver |
Wi-Fi |
|
BCM4331's driver not ready yet |
|
Other |
Battery |
|
Works out of the box |
Bluetooth |
|
Untested but detected |
|
CD/DVD drive |
|
Works out of the box |
|
Fan |
|
Requires coretemp(4) and asmc(4) drivers |
|
SD card reader |
|
Works out of the box |
|
Suspend & resume |
|
Requires sysctl hw.acpi.lid_switch_state=S3 |
|
Webcam |
|
Untested but detected |
|
Ports |
DisplayPort |
Untested but detected |
|
FireWire |
Untested but detected |
||
Thunderbolt |
|
||
USB |
|
||
Headphone jack |
Available on pcm1 |
||
Sound |
Speakers |
|
Requires tweaking to power up the sub-woofer |
Last update: 2021-06-13T10:58:27+0000 |
- Legend
OK
Somewhat OK: requires additional tweaking or works worse than expected
Present but status unknown or untested
Does not work
nothing Not sure if present
3. Tweaks on FreeBSD 12.x-RELEASE
3.1. Battery
- Internal battery is detected out of the box.
Maximum efficiency while on battery is done with powerd(8) and the following settings on /etc/rc.conf:
# Enable powerd(8) at boot powerd_enable="YES" # powerd(8) flags power_flags="-n min -a hiadaptive -b adaptive"
3.2. Fan control
Fan control needs the asmc(4) and coretemp(8) drivers. Once drivers are loaded with kldload asmc && kldoad coretemp, control of the fan is done with sysctl(8). For example, the following would set the fan speed running at 3200 RPM:
sysctl dev.asmc.0.fan.0.minspeed=3200
A quick and dirty shell script to control the fan based on the current temperature of the cpu: asmcfan
Make a cronjob running every minute on /etc/crontab (or root's crontab by making the proper change on the cron entry below):
# Setting fan speed based on current temperature * * * * * root /opt/local/bin/asmcfan
3.3. Sound
Kernel driver for the Cirrus Logic CS4206: snd_hda(4)
- List of pcm devices:
% cat /dev/sndstat FreeBSD Audio Driver (64bit 2009061500/amd64) Installed devices: pcm0: <Cirrus Logic CS4206 (Internal Analog 3.1/2.0)> on hdaa0 (1p:4v/1r:4v) default pcm1: <Cirrus Logic CS4206 (Analog Headphones)> on hdaa0 (1p:1v/0r:0v) pcm2: <Cirrus Logic CS4206 (Digital)> on hdaa0 (1p:1v/0r:0v) No devices installed from userspace.
By default, sound is tiny (it does sound muffled). These laptops has 2 internal speakers (the right is tied to a tiny sub-woofer) so the default pin assignment should be corrected by inverting sequence of internal speakers pins that are in the same association to correctly power up the sub-woofer. From snd_hda(4) sequences are explained:
For multichannel input/output associations sequence numbers encode channel pairs positions: 0 - Front, 1 - Center/LFE, 2 - Back, 3 - Front Wide Center, 4 - Side. Standard combinations are: (0) - Stereo; (0, 2), (0, 4) - Quadro; (0, 1, 2), (0, 1, 4) - 5.1; (0, 1, 2, 4) - 7.1.
To correct this pins need to be adjusted at boot time. Put this on /boot/device.hints:
hint.hdaa.0.nid10.config="seq=0" hint.hdaa.0.nid11.config="seq=1"
Reference: https://forums.FreeBSD.org/threads/how-to-solve-tiny-sound-on-a-macbook-pro-9-2-mid-2012.80741/
- The sound may be too low out of the box. Raise up the relative level with:
sysctl hw.snd.vpc_0db=1
The auto-sense of the headphone jack port while being correctly detected does not work when in the same association as the speakers and use the correct seq=15. Use a graphical mixer (ie. audio/gtk-mixer) or sysctl hw.snd.default_unit=1 to switch to the headphones as a workaround.
Equalizers in mixer applications are possible via the following device configuration on /boot/loader.conf:
# Enable equalizer in mixer applications for internal speakers (pcm0) hint.pcm.0.eq=1 # Enable equalizer in mixer applications for analog headphones (pcm1) hint.pcm.1.eq=1 # Enable equalizer in mixer applications for digital line (pcm2) hint.pcm.2.eq=1
3.4. Suspend/Resume
Suspend and resume is working after setting the following in /etc/sysctl.conf.
- To suspend when closing the lid:
hw.acpi.lid_switch_state=S3
- To suspend when using the power button:
hw.acpi.power_button_state=S3
- To suspend when closing the lid:
3.5. Trackpad
The atp(4) driver is old making the trackpad fuzzy. Use the more recent kernel driver wsp(4).
Put the following on /etc/sysctl.conf:
hw.usb.wsp.enable_single_tap_clicks: 0 hw.usb.wsp.scr_hor_threshold: 20 hw.usb.wsp.pressure_tap_threshold: 120 hw.usb.wsp.pressure_untouch_threshold: 10 hw.usb.wsp.pressure_touch_threshold: 50 hw.usb.wsp.z_factor: 5 hw.usb.wsp.scale_factor: 12 hw.usb.wsp.debug: 1
To make the trackpad working in Xorg, add this to /etc/sysctl.conf:
kern.evdev.rcpt_mask=3