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*


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” @ 1280×800
Wireless Broadcom BCM4331 802.11a/b/g/n Dual-Band Wireless
Sound Cirrus Logic CS4206 (Internal Analog 3.1/2.0)

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-13 12:58:27+0200
  • 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

  • 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"
  • 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
  • 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.
hint.hdaa.0.nid10.config="seq=0"
hint.hdaa.0.nid11.config="seq=1"
  • 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
  • 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
  1. The atp(4) driver is old making the trackpad fuzzy. Use the more recent kernel driver wsp(4).
  1. 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
  1. To make the trackpad working in Xorg, add this to /etc/sysctl.conf:
kern.evdev.rcpt_mask=3

  • laptops/apple_macbookpro9_2.txt
  • Last modified: 2022/02/04 05:05
  • by TrevorRoydhouse