[問題] 2.4G 無線滑鼠鍵盤憑甚麼關我筆電?
Hi,
我筆電是個 ASUS X205TA, kernel 5.10.24, Debian buster
筆電 USB 插了一個所謂 "空中飛鼠" 的 HID.
這是一個兩面, 有陀螺儀的"飛鼠"跟鍵盤.
其中一面是個簡單的配置:遊標,[OK], 音量,
最上面還一顆紅色的 [POWER] 鍵,是我需要各位解惑的地方!
1. 它憑啥關我筆電?甚麼管道?我自己都還要 sudo, 它誰?
2. 如何告訴我的系統,不准接受 hid 來的 shutdown 命令?
系統只有最小的 window manager, 不用 desktop.
------------- 背景補充說明 -----------
我把這筆電當電視盒用,是不關機的
拉 HDMI 線到一個甚麼都沒有的電視
平常蓋子都合起來的,上面堆滿雜物
看電視或換 kernel 重開機... 都是經 ssh
或是 barrier(前身叫 synergy)直接把滑鼠滑過去
不用電腦的時候,就用這支 "空中飛鼠"
這支空中飛鼠有兩個紅外線 LED, 平常也沒在用吧
^^^^^^^^^^^^^
改錯字,是一顆,不是兩顆!
沒錯,我也一直把 HID 視為恐怖的安全威脅...
沒想到,它連 "正常" 的 feature 就這麼恐怖了喔
我一按到見它紅色的 [POWER] 鍵,系統就 shutdown!
所以一直避免去碰那一顆紅色鍵
昨天,癢癢的,心想它的 IR LED 總有個功能吧
雖然找不到資料說它可以學習電視機的搖遙控碼
終於試出來了!它確實可以經由 LED 關我電視
so far so good... 但是它確同時關電視也關電腦!
哈囉~
我不曉得怎麼告訴空中飛鼠請它不要這麼做
因為實在找不到資料
所以,只好回到我本來就要認真面對的問題:
它是怎麼關我電腦的???
我 Linux 這邊的確 load 了一個叫 cec.ko 的 module
但我的電視根本不懂甚麼是 CEC... 所以應該無關
再來就是,
我要怎麼 disable 掉來自 HID 的恐怖指令?
好了,還有甚麼我根本沒搞清楚的事呢?拜託了~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.174.130 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1616295863.A.647.html
推
03/21 11:38,
3年前
, 1F
03/21 11:38, 1F
推
03/21 11:40,
3年前
, 2F
03/21 11:40, 2F
→
03/21 11:41,
3年前
, 3F
03/21 11:41, 3F
推
03/21 11:53,
3年前
, 4F
03/21 11:53, 4F
題外話,聽起來,好像我可以把 systemd 弄掉,是嗎?忍很久了...
HandlePowerKey=ignore 嗎?那我就不能按筆電的電源鍵了嗎?
disable power key, 這我得確沒想到.
但是這台只要用 XHCI 就會隨機當掉, 或卡住
常常需要按住電原源鍵很久才能關機呀....
所以,你們是說,它是送 ACPI 信號下的手嗎?
你們都覺得還好喔...
是說,一個 remotely accessable device
(廣告上說 15 公尺, 天啊~)
可以有這 privilege 真的讓我擔心啊,
那 proximity 這一層安全保障不是徹底被 neutralized 了? ....
我先來改 logind.conf 看看... hmmm 怎麼 reload 呢?
算了,重開好了
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:13:51
回來報告,沒有用,我的 logind.conf 現在只有4行有效:
HandlePowerKey=ignore
HandleSuspendKey=suspend
HandleHibernateKey=hibernate
HandleLidSwitch=ignore
只是,就算完全 disable 掉電源鍵,
聽起來還是不理想說....
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:23:22
喔還有,剛剛確認了一下,電源鍵真的失效了,
但是那個東西,說關就關,哈囉~
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:26:53
推
03/21 12:26,
3年前
, 5F
03/21 12:26, 5F
→
03/21 12:27,
3年前
, 6F
03/21 12:27, 6F
感謝!你傳的是福音啊~ 有空時,給個有詳細說明的 pointer 吧!
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:30:17
→
03/21 12:36,
3年前
, 7F
03/21 12:36, 7F
不能睡啊~
剛剛才在想先把 logind.conf 改回來,
免得關不了機,沒想到,已~經~當~了~ :)
救命啊~ 我現在怎麼關機? .....
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:42:25
推
03/21 12:41,
3年前
, 8F
03/21 12:41, 8F
推
03/21 12:43,
3年前
, 9F
03/21 12:43, 9F
對對!抱歉!剛剛按著不放,還好關了,多謝!
另外,我這筆電沒紅外線也,
我也好久沒看到 lirc 這個字了..
是在懷疑筆電接收了"它"的 IR 信號嗎?
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:47:13
推
03/21 12:50,
3年前
, 10F
03/21 12:50, 10F
→
03/21 12:50,
3年前
, 11F
03/21 12:50, 11F
→
03/21 12:50,
3年前
, 12F
03/21 12:50, 12F
※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:56:21
推
03/21 13:06,
3年前
, 13F
03/21 13:06, 13F
噓
03/21 15:49,
3年前
, 14F
03/21 15:49, 14F
除了 hid 的 DoS, 還有更多事可以做...
噓
03/21 17:37,
3年前
, 15F
03/21 17:37, 15F
啊就是技不如人,就找人幫忙囉~
→
03/21 17:38,
3年前
, 16F
03/21 17:38, 16F
→
03/21 17:58,
3年前
, 17F
03/21 17:58, 17F
※ 編輯: cuello (39.12.130.207 臺灣), 03/21/2021 19:31:05
→
03/21 22:25,
3年前
, 18F
03/21 22:25, 18F
推
03/22 14:57,
3年前
, 19F
03/22 14:57, 19F
→
03/22 14:57,
3年前
, 20F
03/22 14:57, 20F
→
03/22 14:57,
3年前
, 21F
03/22 14:57, 21F
是的,Linux 也有 sysctl(8)
我剛剛去看 linux-5.10.24/Documentation/admin-guide/kernel-parameters.txt
機器沒在用的時候, 再來試試 acpi=off 或是 pci=noacpi
但是,我也真的搞不清楚兩者的區別
我對這些 kernel param. 完全沒有掌握...
真的是,別人怎麼用,我也跟著試試看而已
感覺上,電源鍵所產生的,
是個 acpi event, udev 攔不到...
不然,我是可以自己來攔住的
但是它一定是模擬電源鍵 event 嗎?
剛剛也看了一下, /etc/acpi/powerbtn-acpi-support.sh
well... systemd 介入得真很深, 然後也創造了一堆 "policies"
無論如何,我們上次已經試過把 power button disable 掉了
但是它還是可以關我機...
它是經由甚麼管道關我機器的,相信不只我一個人會想知道吧...
它是觸發了一個 acpi event 嗎?
我不知道.... 現在只能亂想...
※ 編輯: cuello (59.115.174.130 臺灣), 03/23/2021 00:39:46
令外,剛剛又看了一下 `sysctl -a`
裡面有一行 kernel.poweroff_cmd = /sbin/poweroff
/sbin/poweroff --- sym-link ---> /bin/systemctl
還是 systemd 在掌控
※ 編輯: cuello (59.115.174.130 臺灣), 03/23/2021 00:59:28
所以,基本上我可以到
/etc/acpi/events/powerbtn-acpi-support
去攔截看看,試過再來報告
※ 編輯: cuello (59.115.174.130 臺灣), 03/23/2021 01:27:15
→
03/23 01:59,
3年前
, 22F
03/23 01:59, 22F
推
03/23 02:02,
3年前
, 23F
03/23 02:02, 23F
:) 忘了 systemd 就是 init
是說... 我到底是忘了,還是害怕想起來...
我去試了 echo o | sudo tee /proc/sysrq-trigger
是關機了, 不過非常暴力,沒 sync, 沒 umount,看起來不像"它"關機的樣子
然候 `cat /proc/sys/kernel/sysrq` 是 438, 我的其它機器也是
手癢就亂試了一下 # echo 0 > /proc/sys/kernel/sysrq 但"它"關機還是很順暢
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 12:43:25
我試過了 kernel param. acpi=off 但是這一台開機不起來
(root fs 的 UUID "不存在", 進入 initramfs 的 prompt)
就沒再試 pci=noiacpi 了...
去檢查 /etc/acpi/events/ 有兩個檔案
1. /etc/acpi/events/powerbtn-acpi-support 有2行
---
event=button[ /]power
action=/etc/acpi/powerbtn-acpi-support.sh
---
2. /etc/acpi/events/powerbtn 有4行
---
# /etc/acpi/events/power
# This is called when the user presses the power button
event=button/power (PWR||PBTN)
action=/sbin/poweroff
---
其中,第2個檔案有點奇怪,因為我其它機器都沒有,
用 "dpkg -S" 查已安裝 pkg
也用 "apt-file find" 找未安裝 pkg
都查不到 "/etc/acpi/events/powerbtn" 是哪裡來的
兩個有不一樣的 event 的寫法,反正我不懂
就把兩個檔岸的 action 都改成指到我家的 one-liner
sudo /bin/sh -c "echo $0: down down down > /dev/kmsg"
(大概不需要 sudo,但無論如何我這麼做了)
(我會盡量必不漏細節,像個合作的 patient)
沒有用,只是 "隱約覺得" 電源鍵不太靈敏,似乎按兩三次才關機?
anyway, 無論是按哪一個電源鍵,我都沒能阻止關機
因為看不到 `dmesg`, 又新增一行
date +%s >> /我家/down
開開關關忙亂中,印象裡,"/我家/down" 不曾出現過
還好編輯的時候,又去確認一下,有!它們(?) 的確有被叫到過
忙亂中,忘了去區分是哪個檔案...
(後記:剛才又去看 "/我家/down"
epoch 時間都是成雙成對!
所以檔案 1跟2 都有被執行.
我前面說 "好像沒出現過" 很能是看錯機器...)
不過結論還是,改掉以上兩個檔案的 action= 沒能阻止關機.
補充說明一些或許不該遺漏的細節:
改這兩個檔案時,我先是用 # 把原來那一行 action= comment 掉
發現這麼做沒有用之後,就把 comment-line 去掉,保留原始模樣
因為我實在不能假設他們會如預期去 parse 這兩行
所以,我現在的 /etc/acpi/events/ 還有另外兩個檔:
powerbtn-acpi-support.org 跟 powerbtn.org
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 13:31:33
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 13:33:10
忘了一件事,本來想要 purge 掉 acpi-support-base 並重裝
因為,我多出一個來源不明的 "/etc/acpi/events/powerbtn"
# apt autoremove --purge acpi-support-base
卻看到它要移除5個 packages:
acpi-fakekey* acpi-support* acpi-support-base* pm-utils* vbetool*
因為看 acpi-fakekey 似乎有可能塞給 key-buffer 像是 "init 0" 啊,
或是 sysrq 啊 .... etc. 就沒有繼續下去,而是把 acpi-fakekey 解除安裝
但這件事對於關機的事情絲毫沒有影響
(我是說,我沒看到任何影響... god...)
解安裝 pkg acpi-fakekey 時,沒有其它的 dependancies
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 13:44:47
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 13:45:06
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 14:00:37
※ 編輯: cuello (59.115.208.54 臺灣), 03/23/2021 14:02:26
推
03/23 19:25,
3年前
, 24F
03/23 19:25, 24F
→
03/23 19:25,
3年前
, 25F
03/23 19:25, 25F
好,下次應該會記得你提過這事。
斷斷續續偶而玩一下我現在的
shutdown sequence.
感覺愈來愈佩服這個 "空中飛鼠"
玩電源鍵玩到因為這個或那個而當機
但是"它"辦起事情總是乾淨俐落
所以,讓我們崇拜吧
https://i.imgur.com/7mJwOoi.jpg
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 19:29:42
上幾此提起到 /etc/acpi/events/ 裡"來源不明"檔案 (2)
原來是約一年前因為按電源鍵不能關機, 忘了怎麼建立的
剛剛,為了玩這兩個檔案,系統卡住了了無數次, 硬關, 再開
最後,居然是捨棄 acpi-support-base 套件的
/etc/acpi/events/powerbtn-acpi-support
而用我自己不知哪裡看來,抄來的
/etc/acpi/events/powerbtn (那四行前面有抄進來)
相較於檔 1,這個檔案關機似乎是 *繞過* systemd 的
聽說有一些事情是 *繞過* systemd 比較方便
而且看起來是日常的, 相當正式的 practice!
常常讓我想起自己初學計算機所寫的程式...
我以前因為電源直鍵沒作用, 忙了一陣子
後來,我自己相信是因為裝了 acpid 才好的
但是, 我自己是非常不可靠的...
剛剛把 acpid 停用了, 我的"兩個"電源鍵都還很好用
所以, $ service --status-all | grep ${1:-"+"}
現在是
[ + ] cron
[ + ] dbus
[ + ] exim4
[ + ] kmod
[ + ] network-manager
[ + ] networking
[ + ] ntp
[ + ] procps
[ + ] rsyslog
[ + ] ssh
[ + ] tlp
[ + ] udev
(題外話,還有甚麼多餘的嗎? :)
稍微整理一下, 目前的狀態 ("兩個"電源鍵都正常動作)
1. logind.conf 沒有動, i.e. HandlePowerKey=poweroff
2. /etc/acpi/events/powerbtn 是繞過 systemd 的(再抄一次好了)
---
# /etc/acpi/events/power
# This is called when the user presses the power button
event=button/power (PWR||PBTN)
action=/sbin/poweroff
---
3. acpid 停用了
4. logind.conf: HandlePowerKey=ignore 的話
電源鍵失效, 但是 "空中飛鼠" bypass systemd 還是關我機
而且是... err.... gracefully!
(想到再補)
5. 也試過 # echo 0 > /proc/sys/kernel/sysrq (它照關不誤)
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 20:01:41
推
03/24 20:01,
3年前
, 26F
03/24 20:01, 26F
→
03/24 20:01,
3年前
, 27F
03/24 20:01, 27F
我不熟,所以只有 $ sudo journalctl -a |grep shut |less -r
(刪掉了,見以下修正,因為忘了 case)
剛剛又在想,照片上的產品是要賣給所有人的(包括 windows 用戶)
所以,它應該做的是很低階的事情... 我不曉得有無包含 mac 用戶...
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 20:26:34
喔,還有,這東西買家很多是拿來插各廠牌智慧型電視機的
不過, 當初,這個是跟 remix mini 電視盒來的(Android 5)
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 20:33:38
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 20:34:18
抱歉!case! $ sudo journalctl -a |grep -i shut |less -r
Mar 24 20:05:53 h systemd[1]: Starting Update UTMP about System Boot/Shutdown...
Mar 24 20:05:54 h systemd[1]: Started Update UTMP about System Boot/Shutdown.
Mar 24 20:05:54 h systemd[1]: Starting Restore /etc/resolv.conf if the system crashed before the ppp link was shut down...
Mar 24 20:05:54 h systemd[1]: Started Restore /etc/resolv.conf if the system crashed before the ppp link was shut down.
Mar 24 20:05:58 h systemd[1]: Starting TLP system startup/shutdown...
Mar 24 20:05:58 h systemd[1]: Started TLP system startup/shutdown.
$ sudo journalctl -a |grep -i power |less -r
Mar 24 20:05:50 h kernel: ACPI: Power Resource [P18P] (off)
Mar 24 20:05:50 h kernel: ACPI: Power Resource [P1XT] (off)
Mar 24 20:05:52 h kernel: input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input15
Mar 24 20:05:52 h kernel: ACPI: Power Button [PWRB]
Mar 24 20:05:54 h dbus-daemon[1730]: dbus[1730]: Unknown group "power" in message bus configuration file
Mar 24 20:05:55 h kernel: Modules linked in: uvcvideo(+) videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc intel_soc_dts_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crc32_pclmul nls_ascii aesni_intel crypto_simd cryptd nls_cp437 intel_cstate vfat brcmfmac brcmutil deflate efi_pstore asus_nb_wmi pcspkr evdev cfg80211 intel_chtdc_ti_pwrbtn ofpart iTCO_wdt intel_pmc_bxt iTCO_vendor_support intel_spi_platform intel_spi spi_nor mtd tiny_power_button button
soc_button_array int3403_thermal int3406_thermal int3400_thermal processor_thermal_device int340x_thermal_zone acpi_thermal_rel intel_soc_dts_iosf snd_intel_sst_acpi snd_soc_acpi_intel_match snd_soc_acpi snd_intel_sst_core acpi_pad intel_int0002_vgpio asus_wireless ac snd_soc_rt5645 snd_soc_sst_atom_hifi2_platform snd_soc_rl6231 snd_soc_core elan_i2c snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd soundcore i915 cec rc_core drm_kms_helper drm i2c_algo_bit fb_sys_fops syscopyarea sysfillrect
sysimgblt efivarfs
Mar 24 20:05:56 h systemd-logind[1723]: Watching system buttons on /dev/input/event14 (Power Button)
Mar 24 20:05:58 h tlp[2736]: Applying power save settings...done.
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 21:05:05
※ 編輯: cuello (59.115.208.54 臺灣), 03/24/2021 21:19:40
推
03/24 23:31,
3年前
, 28F
03/24 23:31, 28F
→
03/24 23:31,
3年前
, 29F
03/24 23:31, 29F
hmmm... 我的麻煩是會得到
Specifying boot ID or boot offset has no effect,
no persistent journal was found.
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 00:57:59
然後,我又直接去動 /etc/acpi/powerbtn-acpi-support.sh
把最後一行(叫 /sbin/shutdown 那行) 改為叫我家的 script
它只做寫 /dev/kmsg 的事李情, 按筆電電源鍵, 不僅事情沒做, 還會當機
但是,空中飛鼠的電源鍵關機動作很乾淨, 它根本就繞過 systemd
至於會當機... 大概,反正... 我干擾了整個 interrupt handling 吧...
好,就乾脆在 /etc/acpi/powerbtn-acpi-support.sh 的第一行寫:
echo "$0: power button pressed..." > /dev/kmsg
exit 0
然後, guess what :)
無論是筆電,還是"飛鼠" 的電源鍵 都可正常關機... 一如往常 XD
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 17:50:22
下一步玩的是 xinput(1), 跟 "空中飛鼠" 有關的幾行是:
$ DISPLAY=:0.0 xinput --list | grep RFIC
FREEWAY TECHNOLOGY RFIC-MOUSE Consumer Control id=16 [slave pointer (2)]
FREEWAY TECHNOLOGY RFIC-MOUSE id=18 [slave pointer (2)]
FREEWAY TECHNOLOGY RFIC-MOUSE Keyboard id=15 [slave keyboard (3)]
FREEWAY TECHNOLOGY RFIC-MOUSE System Control id=17 [slave keyboard (3)]
FREEWAY TECHNOLOGY RFIC-MOUSE Consumer Control id=26 [slave keyboard (3)]
$ xinput disable 16 18 15 17 26 (我是分開做的, 不知能不能寫在一行)
好,這樣,"空中飛鼠" 武功就廢了吧! 沒錯!全廢了!......
除了.... 那一顆紅色的[電源]鍵! 難怪他們漆成紅色的... 厲害吧~
所以,不曉得有沒有硬體比較熟的網友?
另外,那.... 我們的 USB 好像還真的蠻 weak 的說....
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 19:09:08
推
03/25 19:59,
3年前
, 30F
03/25 19:59, 30F
→
03/25 19:59,
3年前
, 31F
03/25 19:59, 31F
好,我來試看看,平時用 lilo, 但這台是 grub....
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 21:30:07
我在 google .... 剛是到 grub 裡把
command line 加了 "init=/bin./bash"... 不是喔....
你的意思是到最單純的 single user mode 嗎?
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 21:40:22
啊對啦,忘了講,我想在 grub 畫面用鍵盤,必須先拔掉 USB 的發射器
不然鍵盤不動...
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 21:42:14
先講你上次提的,我改了 /etc/systemd/journald.conf (Storage=persistent)
可以看到最後一次關機 (按飛鼠關的)
(我覺得有關的)
(...)
Mar 25 21:53:56 h sudo[3573]: pam_unix(sudo:session): session closed for user root
Mar 25 21:54:14 h systemd-logind[1840]: Power key pressed.
Mar 25 21:54:14 h systemd-logind[1840]: Powering Off...
Mar 25 21:54:14 h systemd-logind[1840]: System is powering down.
Mar 25 21:54:15 h systemd[1]: Stopped target Graphical Interface.
(...)
Mar 25 21:54:16 h systemd[2804]: Reached target Shutdown.
這樣的話,又不像是繞過 init 啊....
只是目前看不到 key press 來源...
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 22:03:23
有啦, -a -o verbose 可以看到
(...)
SYSLOG_IDENTIFIER=systemd-logind
_COMM=systemd-logind
_EXE=/usr/lib/systemd/systemd-logind
_CMDLINE=/lib/systemd/systemd-logind
_CAP_EFFECTIVE=24420002f
_SYSTEMD_CGROUP=/system.slice/systemd-logind.service
_SYSTEMD_UNIT=systemd-logind.service
CODE_FILE=../src/login/logind-button.c
CODE_LINE=158
CODE_FUNC=button_dispatch
MESSAGE=Power key pressed.
(...)
還有剛剛 xinput 的故事,我也不會講了
整支都變磚塊了,只有「電源鍵」」會動
另外,grub 我後面加了 init=/bin/bash 還是開到最高 runlevel...
真的不會用... :(
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 22:16:37
再來把一些東西整理一下
$ lsusb -t
Bus 001 Device 005: ID 25a7:2402
^^^^^^^^^^^^ 剛忘了講是這個
Bus 001 Device 006: ID 2318:2808 Shining Technologies, Inc. [hex]
Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 003: ID 0bda:57b5 Realtek Semiconductor Corp.
Bus 001 Device 002: ID 8087:07e6 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ls -l /dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-* | cut -d " " -f9-
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-event-if00 -> ../event2
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-event-joystick -> ../event4
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-event-kbd -> ../event1
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-if01-event-mouse -> ../event5
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-if01-mouse -> ../mouse0
/dev/input/by-id/usb-FREEWAY_TECHNOLOGY_RFIC-MOUSE-joystick -> ../js0
先前把 event[2415] mouse0 js0 都 rm 掉, 所有功能都正常
這我也不懂... 要不是 Bencrie 一路陪到底,我自己才不會玩到這裡咧....
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 22:40:51
※ 編輯: cuello (59.115.208.54 臺灣), 03/25/2021 22:45:06
推
03/26 11:33,
3年前
, 32F
03/26 11:33, 32F
推
03/26 11:45,
3年前
, 33F
03/26 11:45, 33F
推
03/26 12:34,
3年前
, 34F
03/26 12:34, 34F
推
03/26 23:17,
3年前
, 35F
03/26 23:17, 35F
又有許多功課要作了, mx, devuan :)
有啦,我用 devuan usb-live 開過機, 後來不知怎樣不了了之...
無論如何, Bencrie 給了一個, 我想是很關鍵的提示啦
就是 systemd 跟 desktop 的關係
而我是從來不用 desktop 的,以後應該也不會
這給了我具體的感覺:抽掉 systemd 原來是可能的
但是還沒有機會開始著手去爬文就是
無意引起 "vi-或是-emacs" 的討論
我從來不詳 systemd 發展過程, 只是有一天突然找不到 inittab ...
先來跟大家報告,目前為止暫時的結論:
問題 (1)
至今無解, 也就是, 這個 "空中飛鼠" 是怎麼關我機的.
目前比較可靠的想像是
它最像是觸發了一個 [臨機按下電源鍵的 event]
不管是甚麼 event...
我先前要堅稱的"它繞過" init,似乎很錯...
問題 (2)
我怎麼阻止它關我機?現在只能用 Bencrie 一開始的提議
/etc/systemd/logind.conf: HandlePowerKey=ignore
就是完全不用筆電的電源鍵.
大家會說,啊~ 我不是說,改 logind.conf 無效嗎?
是這樣的,我當時不是還碎碎唸說,
改了之後怎麼 reload 讓它生效嗎...
其實到現在我也沒有個確定的答案
那重新開機不是就生效了?!
這就是我必須說聲抱歉的主因
情況顯示,並非如此!!!
我最近機器開開關關的都已經三位數了
所以我後來愈保守,不想隨便把實驗結果po出來亂!
根據 sudo journalctl -f 裡所看到的紅字, 例如:
i2c i2c-3: i2c write failed: -121
i2c_designware 80860F41:04: controller timed out
intel_soc_pmic_chtdc_ti i2c-INT33F5:00: Failed to ack 0x1: -110
intel_soc_pmic_chtdc_ti i2c-INT33F5:00: Failed to read IRQ status: -110
爬了許多文,很多是在規定蠻嚴的地方
(我沒有全部都列舉 也沒真的徹底爬完所有的討論)
大家會碰到一個還蠻頭痛的問題, 就是
"你上一次關機前的 state,會影響到這次..."
用我的話說:關機並沒有 initialize 機器到同樣的狀態向量.
更何況,在這中間,我又 compiled 過 kernels
從 5.10.24 到 5.10.26,然後又換到 5.4.108
然後,他們也認真地在考慮 patch 某 .c 檔案裡的*常數*(!)
當然,我並沒有跟著玩進去...
想說,我既然決定躲在 longterm 的 kernel 就不該這麼勇敢吧...
voila
※ 編輯: cuello (59.115.200.5 臺灣), 03/29/2021 21:31:35
→
03/30 00:48,
3年前
, 36F
03/30 00:48, 36F
是的,雖然我的是 Atom Z3735F Bay Trail 是個 SoC
但相信對應的功能都在裡面
所以無論是筆電的電源驗鍵或是 USB HID 的電源鍵
經過 hardware abstraction 都成為所謂的 "KEY_POWER"
$ grep KEY_POWER /usr/src/linux-`uname -r`/include/uapi/linux/input-event-codes.h
#define KEY_POWER 116 /* SC System Power Down */
#define KEY_POWER2 0x164
我不曉得 KEY_POWER2 是甚麼...
推
04/01 22:02,
3年前
, 37F
04/01 22:02, 37F
→
04/01 22:02,
3年前
, 38F
04/01 22:02, 38F
→
04/01 22:02,
3年前
, 39F
04/01 22:02, 39F
是,不管是從 USB, 還是從筆電的鍵直接焊到 GPIO 或哪裡...
它們應該都是被 abstracted 成 KEY_POWER...
只是如果我在上層玩, 會區分不出是哪裡來的信號
我心裡一直偷偷地在想的就是 interrupt source...
事實上, 我這一兩天已經成功區分出兩個電源鍵
並且只禁用我不想要的那一顆電源鍵
所以, /etc/systemd/logind.conf 已改回
HandlePowerKey=poweroff
這個檔案是滿頭痛的, 因為我需要 HandleLidSwitch=ignore
而每一次更新 systemd 都會覆概過去
但現在找到一個可以一併處理的辦法
放在屬於自己管理的地方
不必每次安裝系統都要一個一個去 "修復" 到 "堪用" 為止...
不過,我想... 看甚麼時候來另外回一篇
回報到目前為止的結果好了
這篇已經太長,太亂了...
※ 編輯: cuello (59.115.154.132 臺灣), 04/04/2021 23:53:49
※ 編輯: cuello (59.115.154.132 臺灣), 04/04/2021 23:55:46
推
04/08 19:53,
3年前
, 40F
04/08 19:53, 40F
→
04/08 19:53,
3年前
, 41F
04/08 19:53, 41F
沒有 WTG, 改天有機會再看看, 我想應該會是一樣的結果吧...
基本上, 兩個電源鍵分別走不同的路徑一直到 kernel 的
/usr/src/linux-`uname -r`/drivers/input/evdev.c
筆電上的電源鍵或可以很直接到 GPIO, 但 USB HID 總是要
經過 USB controller, 經 usbhid, 到 ... evdev ...
我先前想像得那麼 "硬體" 應該是蠻錯的 ... :(
※ 編輯: cuello (59.115.221.229 臺灣), 04/10/2021 02:16:12
討論串 (同標題文章)
完整討論串 (本文為第 1 之 4 篇):
18
41
Linux 近期熱門文章
23
129
PTT數位生活區 即時熱門文章