Samsung Galaxy Book 驅動¶
Joshua Grisham <josh@joshuagrisham.com>
這是用於 Samsung Galaxy Book 系列筆記型電腦裝置的 Linux x86 平臺驅動程式,它利用 Samsung 的 SCAI ACPI 裝置來控制額外功能並接收各種通知。
支援的裝置¶
任何具有受支援的 ACPI 裝置 ID 之一的裝置都應該受支援。 這涵蓋了截至本文撰寫時目前可用的大多數“Samsung Galaxy Book”系列筆記型電腦,並且可能還包括其他 Samsung 筆記型電腦裝置。
狀態¶
目前支援以下功能
鍵盤背光 控制
效能模式 控制,使用平臺配置檔案介面實現
電池充電控制結束閾值(在給定的百分比值停止電池充電),實現為電池掛鉤
韌體屬性,允許控制各種裝置設定
處理 Fn 熱鍵 以進行各種操作
由於這些裝置的不同型號的功能可能會有所不同,因此驅動程式中內建了邏輯,該邏輯會嘗試測試每個已實現的功能以獲得有效響應,然後再啟用其支援(註冊其他裝置或擴充套件,新增 sysfs 屬性等)。 因此,重要的是要注意並非所有功能都可能受您的特定裝置支援。
以下功能可能可以實現,但需要額外的調查,因此目前不支援
揚聲器的“Dolby Atmos”模式
在具有
SAM0427的型號上用於提高螢幕亮度的“戶外模式”在具有
SAM0427的型號上的“靜音模式”
鍵盤背光¶
建立一個名為 samsung-galaxybook::kbd_backlight 的新 LED 類,然後將在 /sys/class/leds/samsung-galaxybook::kbd_backlight 使用標準的基於 sysfs 的 LED 介面公開該裝置。 可以透過將所需的值寫入 brightness sysfs 屬性或使用任何其他所需的使用者空間實用程式來控制亮度。
注意
這些裝置中的大多數都具有環境光感測器,該感測器也會在光線充足的條件下關閉鍵盤背光。 目前似乎無法控制此行為,但最好了解一下。
效能模式¶
此驅動程式實現了 平臺配置檔案選擇(例如 /sys/firmware/acpi/platform_profile) 介面,用於處理 Samsung ACPI 裝置的“效能模式”功能。
驅動程式動態地執行每個 Samsung “效能模式”到其各自的平臺配置檔案的對映,因為並非所有型號都支援所有相同的效能模式。 您的裝置可能具有以下一個或多個對映
“靜音”對映到
low-power“安靜”對映到
quiet“最佳化”對映到
balanced“高效能”對映到
performance
載入模組時,可以在核心日誌中列印對映結果。 也可以從 /sys/firmware/acpi/platform_profile_choices 中檢索支援的配置檔案,而 /sys/firmware/acpi/platform_profile 可用於讀取或寫入當前選擇的配置檔案。
如果之前未設定任何配置檔案,則將在模組載入期間設定 balanced 平臺配置檔案。
電池充電控制結束閾值¶
此平臺驅動程式將增加設定電池充電控制結束閾值的功能,但不具備設定開始閾值的功能。
此功能通常被 Windows 中的各種 Samsung 應用程式稱為“電池保護程式”,但在 Linux 中,我們在電池裝置上實現了標準化的“充電控制閾值”sysfs 介面,以便從使用者空間控制此功能。
sysfs 屬性 /sys/class/power_supply/BAT1/charge_control_end_threshold 可用於讀取或設定所需的充電結束閾值。
如果您希望與 Windows 中的 Samsung Settings 應用程式保持互操作性,則應將該值設定為 100 以表示“關閉”,或者僅使用以下值之一啟用該功能:50、60、70、80 或 90。 否則,驅動程式將接受 1 到 100 之間的任何值作為您希望電池停止充電的百分比。
注意
已經觀察到一些裝置在給出小於 30 的輸入值時會自動“關閉”充電控制結束閾值。
韌體屬性¶
此驅動程式設定了以下列舉型別的韌體屬性,如果您的裝置支援它們,則應該可以在 /sys/class/firmware-attributes/samsung-galaxybook/attributes/ 下訪問它們
power_on_lid_open(開啟蓋子時裝置應通電)usb_charging(即使裝置已斷電或處於低睡眠狀態,USB 埠也可以為連線的裝置供電)block_recording(阻止訪問攝像頭和麥克風)
所有這些屬性都是簡單的類布林列舉值,使用 0 表示“關閉”,使用 1 表示“開啟”。 使用 current_value 屬性來獲取或更改裝置上的設定。
請注意,當更新 block_recording 時,輸入裝置“Samsung Galaxy Book Lens Cover”將收到一個 SW_CAMERA_LENS_COVER 開關事件,該事件反映當前狀態。
鍵盤熱鍵操作 (i8042 過濾器)¶
i8042 過濾器將吞下 Fn+F9 熱鍵(多級鍵盤背光切換)和 Fn+F10 熱鍵(阻止錄製切換)的鍵盤事件,而是在驅動程式本身中執行其操作。
Fn+F9 將迴圈顯示鍵盤背光的亮度級別。 將使用 led_classdev_notify_brightness_hw_changed 傳送通知,以便使用者空間可以瞭解更改。 這模仿了其他現有裝置的行為,其中亮度級別由嵌入式控制器在內部迴圈,然後透過通知報告。
Fn+F10 將切換“阻止錄製”設定的值,該設定阻止或允許使用內建攝像頭和麥克風(並生成上面提到的相同的鏡頭蓋開關事件)。
ACPI 通知和熱鍵操作¶
ACPI 通知將在裝置類 samsung-galaxybook 和匯流排 ID 下生成 ACPI netlink 事件,該匯流排 ID 與裝置上找到的 Samsung ACPI 裝置 ID 匹配。 可以使用諸如 acpi_listen 和 acpid 之類的使用者空間工具來接收這些事件。
Fn+F11 效能模式熱鍵將由驅動程式處理; 每次按鍵將迴圈到下一個可用的平臺配置檔案。