IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 华硕灵耀14s(U4700E) 在 ArchLinux 下的开启人脸识别 与 NumberPad 配置 -> 正文阅读

[人工智能]华硕灵耀14s(U4700E) 在 ArchLinux 下的开启人脸识别 与 NumberPad 配置

使用NumberPad数字小键盘

华硕没有公开驱动, 有一个项目实现了他: 链接
原理很简单, 当检测到从右上角边缘向内滑动的时候, 使用i2c总线向触控板发光单元所在寄存器发送点亮/关闭指令, 同时检测到手指按下, 根据位置模拟输入数字.
但是在ArchLinux上存在一点问题:

  • 这个项目的shell会将py程序注册成服务使得可以在启动的时候自动执行, 但是Arch的开机策略可能有问题, 导致存在一定概率让服务先启动, 触控板后启动, 这样程序检测不到i2c总线上的触控板设备, 无法开启
  • 正则写的稍微有点问题, 导致无法匹配触控板ID, 解决方案是

偶尔无法正确启动的解决方法(重启服务还是不可以的情况)

  1. 正确执行安装shell

  2. 修改Python程序

     vim /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py
    
  3. offCmd=...后面添加一行

    print(onCmd)
    
  4. 反复执行Py程序

    sudo python  /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py <your option like m433ia>
    
  5. 当触控板可以正确点亮的时候记录device_id

    i2ctransfer -f -y 1 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
    

    例如这个的ID是1

  6. /proc/bus/input/devices中寻找 i2c-<your device_id>的内容 , 记录下所有符合的行(以 S:开头)

  7. 重启直到触控板不会正确点亮

  8. 重新在 /proc/bus/input/devices, 寻找刚刚记录的行, 例如我刚刚记录的是

    S: Sysfs=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-1/i2c-ASUE140A:00/0018:04F3:3134.0001/input/input11
    

    可以通过MAC快速找到 i2c-ASUE140A:00/0018:04F3:3134.0001

  9. 无法正确使用的时候的设备ID例如i2c-10 就是 10

  10. 尝试运行

    i2ctransfer -f -y  <the device_id you find in step 9> w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
    

    如果成功那么执行11步骤

  11. 修改PY程序

    onCmd = "i2ctransfer -f -y " + device_id + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad"
    offCmd = "i2ctransfer -f -y " + device_id + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad"
    
    + onCmd2 = "i2ctransfer -f -y " + "1" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad"
    + offCmd2 = "i2ctransfer -f -y " + "1" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad"
    - print(onCmd2)
    + 
    + onCmd3 = "i2ctransfer -f -y " + "10" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad"
    + offCmd3 = "i2ctransfer -f -y " + "10" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad"
    + 
    + if subprocess.call(onCmd, shell=True)==1:
    +         onCmd = onCmd2
    +         offCmd = offCmd2
    +         if subprocess.call(onCmd, shell=True)==1:
    +                 onCmd = onCmd3
    +                 offCmd = offCmd3
    + 					if subprocess.call(onCmd, shell=True)==1:
    +							subprocess.call("cp /proc/bus/input/devices /home/liukairui/.numPadErr/$(date '+ERR_%Y-%m-%d_%H:%M')", shell=True)
    +							subprocess.call("echo '\n========\nDEVICE_ID="+device_id+"\n========\n' >> /home/liukairui/.numPadErr/$(date '+ERR_%Y-%m-%d_%H:%M')", shell=True)
    +							sys.exit(1)
    

    这里的1与10分别是正常与不正常时候的设备ID

  12. 尝试重启服务

    systemctl restart asus_touchpad_numpad.service 
    
  13. 如果开机的时候自动点亮那么说明正确运行, 需要滑动两次才能关闭, (因为第一次还是重新点亮设备)


开机偶尔无法正常启动, 但是重启服务可以正常启动的解决方法

很简单, 就是修改启动延迟, 等待i2c设备启动完成, 修改PY文件

tries=5
+ sleep(5)
# Look into the devices file #
while tries > 0:
+     sleep(8)
    keyboard_detected = 0
    touchpad_detected = 0

如果不想重启服务等5秒,可以写2个py文件,一个是启动时运行,另一个是启动后运行,注册两个服务,一个是开机运行, 一个是平时备用, 可以参阅我的dotfile文件 中的asus*REC.sh

开启红外人脸识别与需要PAM认证的人脸识别登陆

使用的项目是howdy, 这个项目使用了OpenCV实现功能

  • 安装相关文件
    yay -S howdy python-opencv v4l-utils cheese fswebcam
    chmod -R 755 /lib/security/howdy
    
  • 在Howdy - ArchWiki中是这么说的:你想用 howdy 通过 pam 来认证啥就在哪一个配置文件里的首行加入这行配置。
    auth sufficient pam_python.so /lib/security/howdy/pam.py
    
    如果想在使用sudo的时候人脸认证登录那么应该修改文件
    /etc/pam.d/sudo
    
    如果是在登陆的时候那么修改
    /etc/pam.d/system-local-login
    
    如果使用了SDDM那么还要修改
    /etc/pam.d/sddm	
    
    如果使用了i3-lock, 还要修改
    /etc/pam.d/i3lock
    
  • 寻找你的设备
    ls -al /dev/video*
    
    查看所有的摄像头, 打开VLC, 选择媒体列表左侧的设备-> 视频捕获, 可以看到多个设备, 分别点开, 确认有..IR的红外设备, 随便双击一个, 选择菜单来中的, 媒体, 打开捕获设备, 高级选项, 替换视频捕获设备中的/dev/videoX直到找到你的红外摄像头的设备
  • 编辑文件/lib/security/howdy/config.ini, 中的devide_path = none为你的红外设备(例如devide_path = /etc/video2)
  • 退出, 使用sudo howdy -U kearney add添加人脸
  • 使用sudo howdy test测试是否能检测到人脸
  • 重启

p.s.

  • 如果出现 3 个 WARN 是正常的,是 GStreamer 的 warning 597、1034、2056,至于为什么可以看Howdy - ArchWiki中的 Troubleshooting
  • 根据 Howdy - LinuxReviews 中的描述,KDE 在登陆时并不会自动调用人脸识别登陆,需要点击一下登陆按钮才会启动 howdy(不需要输入密码哈)
  • 我最开始使用正常的摄像头录入人脸, 但是登陆校验一直失败, 更换为红外设备才解决, 如果你的电脑没有红外或者红外摄像头无法识别你, 可以将配置文件修改设备为你的正常摄像头

还有不清楚可以参考ArchWiki-Howdy


相关链接

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章           查看所有文章
加:2021-07-29 14:48:21  更:2021-07-29 14:48:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 14:50:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码