场景
最近在使用tx2(可以理解为一台电脑,ubuntu16.04系统)跑实验,另外还有一个thinkpad笔记本在使用,只有一个24寸显示器。
两个需求:
- 由于不想更换键盘和插拔鼠标带来的麻烦,想通过笔记本的键盘鼠标控制tx2和笔记本本身。
- 笔记本和tx2使用同一个外接显示器。
解决办法
由于显示器有两个输入口,所以笔记本和tx2同时接上,用手机安装一个万能遥控,切换不同信号源即可,手机需要支持红外,或者直接用显示器的遥控也行。
所以重点是解决第二个问题,即用笔记本键盘鼠标控制tx2和笔记本本身。
方案一:远程桌面
主要有两种远程桌面协议,vnc和rdp。ubuntu自带支持vnc协议,但是比较卡顿,不能满足日常的流畅使用。rdp协议是windows远程桌面协议,速度很快,局域网内操作远程电脑就像操作宿主机器一样流畅。
于是选定rdp协议。ubuntu下需要安装xrdp,查阅网上资料,说是xrdp与unity(ubuntu16.04默认桌面环境)桌面不兼容,需要安装xfce桌面或者其他桌面。具体操作方法见下面博客链接,且该博客指出不需要安装其他桌面。
https://www.cnblogs.com/xuliangxing/p/7560723.html
可能是因为tx2是arm处理器架构的原因,无法安装TigerVNC ,我试了不安装其他桌面,果然连接后出现雪花屏然后闪退,最后安装了xfce桌面,成功使用rdp协议了。
然而,还是出问题了。。。
由于我是用tx2来跑orb-slam2,在用rdp协议远程运行的时候,出现了下面的错误:
terminate called after throwing an instance of 'std::runtime_error'
what(): Pangolin X11: Unable to retrieve framebuffer options
但是用vnc协议远程时,没有问题。使用glxinfo命令,在vnc协议和rdp协议远程连接时候出现的内容是不一样的,自此判断是opengl配置或者显卡驱动配置相关的问题,或者就是rdp协议与Pangolin不兼容的问题。
找了很多资料,有一些类似的情况,比如虚拟机环境下跑orb-slam2出现上述问题,不过还没找到rdp协议远程碰到这种问题的,以及解决办法。查找解决方法的时候,突然想到如何把笔记本键盘接入tx2,毕竟这才是我的核心需求,于是找到了方案二。
方案二
本质上的需求就是一套键盘鼠标控制多台电脑,远程桌面其实相当于杀鸡用牛刀。已经有一些软件可以解决这个问题。经过搜索,Synergy这款软件可以完美解决我的需求。具体安装和配置有人总结了,参考下面的博客。
https://anjia0532.github.io/2017/02/08/share-mouse-and-keyboard-with-your-windows-linux-machines-md/
我用的笔记本(Windows10)做服务端,tx2(Ubuntu16.04)做客户端。我遇到了一个问题,就是连接不上,查看服务端的日志,发现是SSL加密有问题的原因。
在服务端的编辑》设置
里,取消SSL加密,问题解决。
目前的使用状态:
- 笔记本设置成仅使用第二屏幕,摊平放在桌子上,不遮挡视线。
- 使用笔记本时,将显示器信号源切换到笔记本,移动鼠标到笔记本的界面(键盘自动跟随)。
- 使用tx2时,将显示器信号源切换到tx2,移动鼠标到tx2的界面。
完美解决问题,体验非常好。