====== HP ProBook 645 G1 ======
===== Hardware Overview =====
* Release date: September 2013
* CPU: AMD A8-5550M Richland APU (2100 MHz; up to 3100 MHz in turbo mode), 4 cores, 32 nm, socket FS1 (FS1r2)
* Graphics: Radeon HD 8550G (mobile version of Aruba, Northern Islands)
* Screen: 14.0" HD8 1366×768 AG WLED SVA eDP FLT anti-glare (matte) display panel
* Memory size: DDR3L SDRAM, 1600 MHz, two slots supporting dual-channel memory in 2/4/8 GB SODIMMs, up to 16 GB total
* Southbridge: AMD A76M (Bolton) Fusion Controller Hub (FCH)
* Ethernet: %%RealTek%% 8168/8111 B/C/CP/D/DP/E/F/G PCIe 1Gb, works with ''%%re(4)%%'' ✔
* Wi-Fi: Broadcom BCM43228HMB 802.11a/b/g/n 2×2 (<14e4:4359>, not recognized by GENERIC kernel)
* Bluetooth 4.0 (BCM20702A0, ''%%ubt0%%'' device <0a5c:21f1>), seems to work ✔
* Storage: fixed 9.5 mm SATA HDD and an optical drive %%<%%hp DVD A DU8A5SH NH62>
* Media (SD) card reader: Realtek RTS5227 PCIe <10ec:5227> (not supported yet) :!:
* EMV Smartcard reader: Alcor Micro Corp. AU9560 <058f:9540> (does not seem to work) ✘
* Fingerprint sensor: Validity Sensors, Inc. VFS495 Fingerprint Reader <138a:003f> (untested) :?:
* Camera: HP HD Webcam (%%SunplusIT%%) <05c8:0369> (works fine) ✔
===== Notes =====
Professional-oriented, relatively inexpensive (prices start at $780) AMD APU based laptop with some nice features: VESA-standard DP port (no proprietary HDMI), legacy VGA port, four USB 3.0 ports, no discrete video card, socketed APU and RAM, 1G/s Ethernet, [[/WiFi|WiFi]]/Bluetooth, SD card reader, easy access to internals for maintainability, upgrade, or repair. Has some extra features like EMV smartcard reader, fingerprint sensor, and TPM support.
==== Boot-up and bare console behavior ====
Boots 12.0-CURRENT-[[http://svnweb.freebsd.org/base?view=revision&revision=304729|r304729]] in UEFI mode, not without some issues though (described in [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202309|PR 202309]]). After repeated failed attempts to get native 1366×768 resolution to work, I had to fall back to 1024×768 by putting the following line into ''%%/boot/loader.rc.local%%'' file:
gop set 2
While in ''%%efifb(4)%%'' mode, laptop suspends, but resumes with black screen (keyboard and beeper work). Loading ''%%acpi_video(4)%%'' emits the following kernel messages:
acpi_video0: on vgapci0
acpi_video0: unknown notify event 0xd0
but does not fix blank-screen-on-resume issue. Doing ''%%sysctl hw.acpi.reset_video=1%%'' apparently makes things even worse: laptop either hangs on resume (no keyboard or beeper reaction) or simply reboots. Loading ''%%radeonkms(4)%%'' emits a bunch of info messages and two errors:
error: [drm:pidXXX:r600_ring_test] *ERROR* radeon: ring 0 test failed (scratch(0x8504)=0xCAFEDEAD)
drmn0: error: disabling GPU acceleration
...
error: [drm:pidXXX:r600_acpi_init] *ERROR* Cannot find a backlight controller
Quite surprisingly, after loading KMS driver (VT: replacing driver "efifb" with new "fb"), laptop suspends and resumes seemingly OK (and does it pretty fast). Loading ''%%moused(8)%%'' enables the console mouse, but pointer is not visible (yet copy-paste works) with any video driver if you forget to do ''%%vidcontrol -m on%%''. :)
However, resume sequence emits some more warnings:
acpi0: cleared fixed power button status
ACPI Error: No handler or method for GPE 16, disabling event (20160527/evgpe-834)
drmn0: error: No VRAM object for PCIE GART.
error: [drm:pidXXX:cayman_resume] *ERROR* cayman startup failed on resume
Also, for some reason currently it seems not possible to run %%OpenCL%% programs while in X11 (reported as [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214204|PR 214204]]).
==== Keyboard ====
Generally speaking, keyboard layout leaves favorable impression: Home, End, %%PgUp%%, %%PgDn%%, Ins, Del, and even Scroll Lock are accessible right away without any helper key. To get more use out of **Fn** key modifier, you'd have to run ''%%xev(1)%%'' to gather those keycodes and possibly remap a few of them via ''%%xmodmap(1)%%''. Note that there are some duplicates reported which makes things a bit inconsistent. E.g., Fn-Esc (unmarked) yields keycode 252 which is the same as Fn-F8 (marked as "microphone mute"). Fn-F3 (marked as "crescent") shares keycode 146 with Fn-F9 ("lower brightness"). Fn-Pause (marked as "break") yields keycode 37 which is shared with left Ctrl (keysym Control_L).
Fn-F6/F7 report keycodes 174/176 respectively, and are correctly mapped to XF86AudioLowerVolume/XF86AudioRaiseVolume keysyms by default; ditto for Fn-Insert (keysym Print). Fn-Delete (marked as "sys rq") yields keycode 92 (unmapped). That said, minimal ''%%~/.Xmodmap%%'' might contain the following entries:
keycode 146 = XF86Sleep
! keycode 146 = XF86MonBrightnessDown
keycode 151 = XF86MonBrightnessUp
keycode 238 = XF86Display
keycode 252 = XF86AudioMicMute
[[http://www.thinkwiki.org/wiki/How_to_get_special_keys_to_work|ThinkWiki]] (just as example; there are other good resources) contains some nice recipes how to tame certain bogosities of Fn-affected keys on a laptop.
==== Media (SD) card reader ====
In %%OpenBSD%% 5.3 and %%NetBSD%% 7.0, it should be supported out of the box with the ''%%rtsx(4)%%'' driver, which had not been ported to %%FreeBSD%% yet (see [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204521|PR 204521]]). Inserting (or removing, if it was inserted prior to booting) an SD card triggers nasty interrupt storm on **irq17** and repeated kernel messages:
interrupt storm detected on "irq17:"; throttling interrupt source
According to ''%%vmstat -i%%'', irq17 is assigned to ''%%ehci(4)%%''. Needless to say, SD card is unusable; messages are unstoppable (I've subsequently tried to cherry-pick revisions r308187, r311660, r311693, and r311727 which looked related to card insert/remove logic, made no difference). :(
==== EMV Smartcard reader ====
Should be apparently supported and work with ''%%security/opensc%%'' via standard PC/SC backend (''%%devel/pcsc-lite%%''), but driver initialization fails for some reason:
00000956 ccid_usb.c:612:OpenUSBByName() Found Vendor/Product: 058F/9540 (Alcor Micro AU9560)
00000023 ccid_usb.c:614:OpenUSBByName() Using USB bus/device: 2/3
04977796 ccid_usb.c:1190:ControlUSB() control failed (2/3): -4 LIBUSB_ERROR_NO_DEVICE
00000026 ccid_usb.c:1121:get_data_rates() IFD does not support GET_DATA_RATES request: -4
10041468 ccid_usb.c:783:WriteUSB() write failed (2/3): -7 LIBUSB_ERROR_TIMEOUT
04891068 ccid_usb.c:783:WriteUSB() write failed (2/3): -7 LIBUSB_ERROR_TIMEOUT
04938927 ccid_usb.c:783:WriteUSB() write failed (2/3): -7 LIBUSB_ERROR_TIMEOUT
00000027 ifdhandler.c:188:CreateChannelByNameOrChannel() failed
00006069 ccid_usb.c:189:close_libusb_if_needed() libusb_exit
00000077 readerfactory.c:1107:RFInitializeReader() Open Port 0x200000 Failed (usb:058f/9540:libusb-1.0:2:3:0)
00000010 readerfactory.c:372:RFAddReader() Alcor Micro AU9560 init failed.
00000008 readerfactory.c:605:RFRemoveReader() UnrefReader() count was: 1
00000007 readerfactory.c:1127:RFUnInitializeReader() Attempting shutdown of Alcor Micro AU9560 00 00.
00000007 readerfactory.c:988:RFUnloadReader() Unloading reader driver.
==== Fingerprint sensor ====
Stock ''%%security/libfprint%%'' and its consumers do not support sensors VFS471, VFS491, and **VFS495** (our case). It is possible to get it to work [[https://balintbanyasz.wordpress.com/2015/03/27/get-validity-vfs-495-fingerprint-reader-working-in-ubuntu-14-04/|under GNU/Linux]], by using a wrapper that talks to Validity Sensors' proprietary components (service and library), but upstream is [[https://bugs.freedesktop.org/show_bug.cgi?id=97346|not interested]] in this approach and wants fully open source driver to be developed by someone™.
Theoretically it should be possible to get it working under %%FreeBSD%%, but I haven't tried it.
==== Integrated webcam ====
Works fine with ''%%multimedia/webcamd%%'', simply by following [[http://www.rockafunk.org/InstallWebcamd.html|this tutorial]]. Tested with ''%%multimedia/pwcview%%'' only because I have no need or interest in this piece of [[http://www.howtogeek.com/210921/how-to-disable-your-webcam-and-why-you-should/|potentially dangerous]] hardware.
==== Sound ====
In short, it does not work, actually it does, that is, playback. Speakers are properly muted on earphones insertion. However, to get recording working, I had to issue ''%%sysctl hw.snd.default_unit=1%%'' command, which in turn breaks playback. Very similar problem observed on HP %%EliteBook%% Folio was discussed [[https://forums.freebsd.org/threads/51480|here]], including a working solution, but I didn't try to apply it myself yet. Beeper also works fine (and correctly routed to the earphones when they're plugged in).
==== CPU frequency scaling ====
Prior to [[http://svnweb.freebsd.org/base?view=revision&revision=308005|r308005]], this APU was not supported by ''%%cpufreq(4)%%''; if you see the following lines in the log (dmesg), update your kernel sources and rebuild the ''%%cpufreq(4)%%'' module (since it is included in GENERIC by default, unless your removed it or use custom config file, you'd probably have to rebuild entire kernel):
hwpstate0: going to fetch info from acpi_perf
hwpstate0: msr and acpi _PSS count mismatch.
hwpstate0: get_info_from_msr: AMD family 21 CPU's are not implemented yet. sorry.
==== Temperatures ====
APU is supported by ''%%amdtemp(4)%%''. ACPI reports five thermal zones; ''%%hw.acpi.thermal.tz0.temperature%%'' corresponds to APU (typically one degree lower than ''%%dev.amdtemp.0.core0.sensor0%%''), while ''%%hw.acpi.thermal.tz4.temperature%%'' stays constant around 34°C.
Under sustained load, APU temperatures tend to go above 72°C; limiting maximum frequency to 1900 MHz (''%%powerd -M 1900%%'') allows to cap maximum temperatures around 55°C. APU undervolting is recommended to reduce power consumption (and thus heat dissipation) and increase battery life. It is possible to adjust (reprogram) P-states on this APU with **%%AmdMsrTweaker%%** program (available as ''%%sysutils/amdmsrtweaker%%'' port).
==== Battery life ====
There are several battery versions available for this model, per HP data sheet: from 3-cell 33 W⋅h up to 9-cell 100 W⋅h Li-ion; mine came with 6-cell 55 W⋅h one. According to specifications, new battery should provide up to 9 hours of battery life. My numbers were nowhere near: pre-installed Windows 7 reported ≈3:30 of remaining time in idle state, similar to Ubuntu 15.10. Untuned %%FreeBSD%% reported ≈2:20 when idle; under heavy load (''%%make -j4 buildworld%%'') estimated remaining time per ''%%acpiconf -i0%%'' was ≈1:20.
Running ''%%powerd(8)%%'' did not have noticeable impact on autonomous life time, possibly because only four P-states are defined per ACPI, spanning 1900-3100 MHz, and/or because AMD family 15h is not being fully supported by ''%%cpufreq(4)%%'' driver yet.
----
{{tag>Laptop Mobile}}