[問題] 2.4G 無線滑鼠鍵盤憑甚麼關我筆電?

看板Linux作者 (cuello)時間3年前 (2021/03/21 11:04), 3年前編輯推噓18(20219)
留言41則, 14人參與, 3年前最新討論串1/4 (看更多)
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
還好吧,一般桌面環境按關機也不用 root privilege
03/21 11:38, 1F

03/21 11:40, 3年前 , 2F
如果你 init 沒換還是 systemd 的話就去改 logind 的
03/21 11:40, 2F

03/21 11:41, 3年前 , 3F
config 把 HandlePowerKey 改掉試試看
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
反正你只用 wm,沒用到 logind 的話就可以換 init
03/21 12:26, 5F

03/21 12:27, 3年前 , 6F
傳統的 sysvinit、busybox、openrc、runit
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
另外你的系統有 lirc ?
03/21 12:43, 9F
對對!抱歉!剛剛按著不放,還好關了,多謝! 另外,我這筆電沒紅外線也, 我也好久沒看到 lirc 這個字了.. 是在懷疑筆電接收了"它"的 IR 信號嗎? ※ 編輯: cuello (59.115.174.130 臺灣), 03/21/2021 12:47:13

03/21 12:50, 3年前 , 10F
systemd 很讚呀,自從有了它我才覺得 Linux 操作比較
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
舉個莫名其妙的例子吧 XD
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
無熔絲開關可以在超過15米的地方關你機
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
不要用systemd阿 換alphine linux
03/21 22:25, 18F

03/22 14:57, 3年前 , 19F
在OpenBSD上,電源鍵的行為可以透過用sysctl改kerne
03/22 14:57, 19F

03/22 14:57, 3年前 , 20F
l parameter來改變,不知道linux上面有沒有類似的功
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
sysrq 好像也能關機,不過 systemd 應該不會這麼幹吧
03/23 01:59, 22F

03/23 02:02, 3年前 , 23F
然後 poweroff、reboot 這些本來就 init 在管的吧
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
我都用 aptitude 處理 dependencies,關 solver 跟
03/23 19:25, 24F

03/23 19:25, 3年前 , 25F
autoremove,全部手動調
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
journalctl 那邊不知道有沒有得查,一般關機只會知道
03/24 20:01, 26F

03/24 20:01, 3年前 , 27F
logind 會打 log
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
journalctl -b 1 從 systemd-logind: System is powering
03/24 23:31, 28F

03/24 23:31, 3年前 , 29F
down 開始算吧。
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
你要不要直接 boot 進 bash 按看看到底是不是真的繞過
03/25 19:59, 30F

03/25 19:59, 3年前 , 31F
init 直接關機
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
init 指到 bash 那個我省略太多細節 orz
03/26 11:33, 32F

03/26 11:45, 3年前 , 33F
journalctl 應該可以看到 systemd 監控哪些input devices
03/26 11:45, 33F

03/26 12:34, 3年前 , 34F
不要用systemd ,MX Linux也可以
03/26 12:34, 34F

03/26 23:17, 3年前 , 35F
還有 Devuan GNU+Linux
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
還是南橋直接把usb訊號轉成關機鍵訊號了
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
中間的過程則是由driver(或者說kernel module)實現,
04/01 22:02, 38F

04/01 22:02, 3年前 , 39F
要保留原本電源按鈕的功能的話只能driver
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
你要不要測試看看Windows to go會不會有這種狀況好了
04/08 19:53, 40F

04/08 19:53, 3年前 , 41F
WTG會關就是南橋問題了
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
文章代碼(AID): #1WLhUtP7 (Linux)
文章代碼(AID): #1WLhUtP7 (Linux)