FydeOS 中文社区

面向未来的云驱动操作系统 中文社区 FydeOS for PC 酷比魔方 KNote go 适配性问题

该话题包含 21 回复,有 6 参与者,并且由  Isaac3 周, 4 天 前 最后一次更新。

  • 作者
    帖子
  • #18872

    Shepherd
    参与者

    硬件型号:酷比魔方KNote go

    CPU 类型:赛扬N3350

    显卡类型:intel HD Graphics 128MB

    所使用的 FydeOS 的版本号及使用方法: v6.0 U盘启动,黑屏,左上角有光标。 v5.31 U盘启动,正常进入系统,但触摸屏无法使用。 非常喜欢FydeOS并觉得它非常适合平板,希望未来的版本能够像v5.31一样适配酷比魔方Knote go同时触摸屏可用。

    • 该话题由  Shepherd 于 5 月 前 修正。原因:标题不当
  • #18874

    Shepherd
    参与者

    在命令行里用evtest看了一下接入设备。问题应该在于触摸板的驱动不适配,而触摸屏压根没有驱动。看了linux仓库里有那么多hid接口驱动,也不清楚哪个是什么用途。考虑自己编译chromium os太麻烦了,还是期待官方适配。

  • #18889

    Shepherd
    参与者

    触摸屏型号:mssl1680 折腾了一天,研究出了Ubuntu下怎么用gslx680_ts_acpi开源驱动适配这块触摸屏。

    • #18890

      Shepherd
      参与者

      1.使用dism++提取出windows下的触摸屏驱动SileadTouch.sys;

      2.https://github.com/onitake/gsl-firmware 使用这里面的tools下的scanwindrv工具提取出SileadTouch.sys里的固件信息得到firmware_00.fw文件;

      3.使用tools下的fwtools工具将firmware_00.fw文件转换为silead_ts.fw文件,参数参考firmware\cube\i1101里的参数;

      4.将silead_ts.fw拷贝到ubuntu的\lib\firmware目录下;

      5.https://github.com/onitake/gsl-firmware 将该仓库克隆到ubuntu,ubuntu命令行里make,然后sudo insmod ./gslx680_ts_acpi.ko

      6.执行dmesg命令查看输出,应该会提示找到设备mssl1680,测试触摸屏可用。

      理论上,GSLx68y系列触摸屏控制器都可以用这个方法适配linux,只需要设置好参数即可。2的仓库地址里列出了一些平板设备的适配情况,还提供了使用silead_ts开源驱动的方法,适配性应该更好,有需要可以自行研究。

  • #18891

    Shepherd
    参与者

    折腾了那么久,分享给需要给这个系列触摸屏控制器的平板装linux的人,linux相较于win10更简洁省电适合平板和办公。希望fydeOS官方考虑加入这两个驱动,让fydeOS适配更多机器,更受欢迎。

    给出knote go上提取出来的触摸屏固件文件,希望官方适配。链接: https://pan.baidu.com/s/166dJgaDvxYcWv8QxvsLAUw 提取码: nyte

  • #18892

    Shepherd
    参与者

    https://github.com/dnschneid/crouton/wiki/Build-chrome-os-kernel-and-kernel-modules 这个仓库给出了向chrome os kernal里添加模组的方法,我没试过,我觉得可以添加上述的gslx680_ts_acpi.ko实现chromeos上mssl1680触摸屏的适配。然而我现在连fydeOS v6.0都刷不进啊!以后的版本也不一定能刷入。官方这个月的更新可以把兼容性弄成和v5.31一样吗qwq,这样我就有兴趣抽时间继续折腾了。

    • #18893

      Shepherd
      参与者

      这个方法有个很麻烦的点是每次chromeOS更新都要自己重新编译一遍。

  • #18894

    yunshan
    参与者

    感谢你如此投入的帮助FydeOS。slead的触摸芯片被广泛应用于国产低端触摸设备上。大部分国产低端设备并不认真的按照acpi的规范在填写硬件适配信息。而是将驱动程序参数硬性写到driver里面。因此,一个标准的acpi驱动,无法驱动大部分国产设备,因为不仅需要相应的firmware,还需要适合这个触摸屏的相关参数,比如长宽picel点数,x或y轴反转等等。我们其实在6.0中已经内置了多款国产触摸屏的驱动,但是,各种型号多如牛毛,大部分设备都不写参数。这可能就是省成本的后果吧。

    • #18896

      Shepherd
      参与者

      型号众多难以适配的话,我有一个想法,在检测到用户的触摸芯片是silead系列后,提示用户自行导入windows下的sys驱动文件,输入需要的参数,然后利用我上面提到的工具自动编译驱动。适配成功后询问用户是否允许上传驱动信息,以后再安装或其他同款机器安装就可以自动适配了。其他难以适配的国产触摸屏也是如此,只需研究如何提取和转化Windows驱动为linux驱动即可。这样就引入了一波中低端平板用户。

  • #18897

    Shepherd
    参与者

    我尝试在fydeOS里用sudo make命令编译驱动但是提示没有该命令,是原本就没有这个命令,只能根据内核版本交叉编译吗?还是要用什么特殊方法编译吗?

    • #18898

      Shepherd
      参与者

      原来是没装编译器傻了傻了。。。

  • #18899

    Bigboss007
    参与者

    楼主楼主,我有个酷比iwork10,触摸屏倒是能触摸,就是左右反向,而且没有重力,用上面的方法有解决的可能吗?

    • #18900

      Shepherd
      参与者

      不行,我发现chrome os的shell没有安装任何包管理工具,也就不能下载编译器,不能用make命令编译驱动。还可以考虑自己重新编译整个系统来加入自定义驱动,或者交叉编译驱动。都太麻烦了,搞不来,还是等官方适配吧。

      • 该回复由  Shepherd 于 4 月, 4 周 前 修正。
    • #18902

      yunshan
      参与者

      如果你能在ubuntu或者其它带包管理的linux发行版的下面,成功编译这个触摸屏驱动,并且正确运行,我们会很高兴协助将你的代码以你的名义提交到linux内核中,并优先整合到FydeOS中。

    • #19339
      Songine
      Songine
      参与者

      嘿,老兄,这有一份待收录驱动~ https://fydeos.com/community/topic/19331/

      • 该回复由 Songine Songine 于 3 月, 1 周 前 修正。
      • 该回复由 Songine Songine 于 3 月, 1 周 前 修正。
    • #19365
      Songine
      Songine
      参与者

      嗯,那个帖子被我一不小心改失效了,这个是新的...https://fydeos.com/community/topic/19361/

  • #18988

    shalck
    参与者

    楼主楼主,救命啊,我的触摸屏好像就是这个型号啊,不过分辨率是1920*1200的,现在触摸屏没用。楼主有没有原版安装包啊?另外我这个装上后声音文件打不开,视频文件打不开。。

  • #18989

    shalck
    参与者

    。等等。。。。楼主最后没解决吗???那你那个提示找到驱动是什么鬼??我看懵逼了

  • #18990

    shalck
    参与者

    官方,三个人在等这个驱动了,赶紧适配吧。。。哈哈哈。

  • #19382

    Shepherd
    参与者

    偶然发现Linux内核从4.8版本开始就自带silead驱动!于是心血来潮研究了一番。

    silead系列触摸屏在设计之初没有考虑脱离设备的固件生态的情况,因此使用该驱动需要添加额外的参数。添加的参数就写在linux内核源码的drivers/platform/x86/touchscreen_dmi.c里。添加好参数后,需要重新编译内核。进入系统后将从windows提取的.fw固件文件复制到lib\firmware\silead目录下即可(如果没有silead文件夹则自己创建一个),注意fw文件名要与添加参数里定义的文件名对应。这个固件完全可以让用户自己去提取。

    另外如果touchscreen_dmi.c里已经有你的设备名称,那么你只需要把提取的fw固件放到lib\firmware\silead目录下即可。

    下面是对酷比魔方Knote Go,touchscreen_dmi.c里应该添加的参数代码。

    static const struct property_entry cube_knote_i1101S_props[] = {
        PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
        PROPERTY_ENTRY_U32("touchscreen-min-y",  22),
        PROPERTY_ENTRY_U32("touchscreen-size-x", 1961),
        PROPERTY_ENTRY_U32("touchscreen-size-y", 1513),
            PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-cube-knote-i1101S.fw"), // fw文件名
        PROPERTY_ENTRY_U32("silead,max-fingers", 10),
        PROPERTY_ENTRY_BOOL("silead,home-button"),
        { }
    };
    
    // touchscreen_dmi_table在比较下面的位置
    static const struct dmi_system_id touchscreen_dmi_table[] = {
        /* ...... */
        {
            /* Cube KNote i1101S */
            .driver_data = (void *)&cube_knote_i1101S_data,
            .matches = {
                DMI_MATCH(DMI_PRODUCT_NAME, "i1101S"),
                /* Above matches are too generic, add bios-date match */
                DMI_MATCH(DMI_BIOS_DATE, "01/16/2019"),
            },
        },
        /* ...... */
    }
    

    放出我在manjaro上测试成功的touchscreen_dmi.c和fw固件文件: 链接: https://pan.baidu.com/s/1wpq81E2r27RHDNnZ0qOmIg 提取码: zgej

    只需要官方大人在下次编译内核的时候复制粘贴这两段代码到touchscreen_dmi.c里,即可让fydeOS又多适配一台机器,求求官方了!

    参考资料:https://github.com/onitake/gsl-firmware

  • #20133

    Isaac
    参与者

    我这里是酷比魔方knote,触屏硬件一样,cpu是n3450,问题在于linux下的触屏将github上下载的firmware.fw重命名为mssl1680.fw放在lib/firmware/silead下然后在etc/x11/xorg.conf.d那个文件夹里创建一个文档叫99-calibration.conf,在里面输入 Section "InputClass" Identifier "calibration" MatchProduct "silead_ts" Option "MinX" "601" Option "MaxX" "65974" Option "MinY" "829" Option "MaxY" "67818" Option "CalibrationMatrix" "2.075 0 0 0 2.725 0 0 0 1" Driver "libinput" EndSection 就能用了,要是想校准就自己下个xinput_calibrator校准一下然后改一下数字,不要直接复制 所以说,linux的整明白了,fyde的系统文件也不可见,我该怎么做呢。。。 求大佬帮忙啊!!!!!!!!!!!!!!!! 就这样,看到的好心人帮个忙吧!

  • #20134

    Isaac
    参与者

    我把代码重新发一下

    Section "InputClass"
            Identifier      "calibration"
            MatchProduct    "silead_ts"
            Option  "MinX"  "601"
            Option  "MaxX"  "65974"
            Option  "MinY"  "829"
            Option  "MaxY"  "67818"
            Option  "CalibrationMatrix" "2.075 0 0 0 2.725 0 0 0 1"
            Driver  "libinput"
    EndSection
    

抱歉,回复话题必需登录。