公司里有台SHARP AR-4021
的打印机想要在局域网内实现共享,奈何这货本身没有网络接口,直接去万能的淘宝上175拍了一个打印机共享服务器,喏~就是这货:
双百兆网口,也不带WIFI,很纯粹的打印共享服务功能.
结果订单下好了,钱也支付了,客服过来问了一句打印机什么型号的,发过去人家回了句打印机不支持…瞬间GAME OVER,货都不用发了,直接退款了事.
也懒得再去逛其他店的现成设备了,应该大差不差的就这个价位了.突然想起来之前折腾过的树莓派,Linux下直接跑个CUPS服务难道不香吗?随便逛了逛在咸鱼上170块钱收了一枚树莓派3B,还带一张32G的TF卡和原装壳子,成色很不错,除了跑跑CUPS共享打印机,还能做点其他的扩展服务,比这专门的打印共享服务器不知道要高到哪里去了~
然而…我还是想的简单了,一顿操作猛如虎,CUPS服务跑起来,打印机USB怼上去,添加打印机设备的时候又傻眼了…Linux内置的打印机驱动中虽然有SHARP品牌,但是就是没有这个AR-4021的型号,甚至连相似接近的型号都tm没有…跑到SHARP官网上找了一通,说好的支持Linux…可就是翻遍了也找不到,最后发现这个型号的打印机,官方只提供了Windows下的驱动,骗子!
好吧.故事本来到这里就可以结束了,都准备再买个低功耗的x86电脑棒之类的跑Windows来共享了,突发奇想了一下,能不能用树莓派将本地连接的USB设备直接共享到局域网里面呢?就是不在本地安装设备驱动,直接进行USB设备to网络转发的效果.您别说,嘿~还真有这种解决方案!收集到下面这几种技术方案:
简单看了下,大部分都是商用的收费软件,显然不符合成本预算.最终锁定了VirtualHere
这个方案,虽然也是商用的,不过默认提供了免费试用的授权,只允许共享1个USB设备,貌似没有其他的功能限制.
官网:https://www.virtualhere.com/home
只需要从官网上下载一个二进制文件加上可执行的权限跑一下就ojbk了,相当简单粗暴,后面长期使用的建议做成systemd
开机服务,方法可以参考另外一篇树莓派折腾笔记
$ wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm
$ chmod +x vhusbdarm
$ sudo ./vhusbarm -b
# -b参数表示在后台运行
ps:这个vhusbdarm
进程需要使用tcp 7575
端口进行通信,反正也没开防火墙,无甚大碍的.
从官网上下载Windows适用的客户端安装程序:
https://www.virtualhere.com/sites/default/files/usbclient/vhui64.exe
下载好之后直接运行这个vhui64.exe
就行了,首次启动过程中会提示需要额外安装Apple Bonjour
插件,这货用的是苹果开发的网络自动发现协议,还挺新鲜的哈~
启动起来后,会自动搜索发现当前局域网内已经运行服务器端的设备信息:
测试过程中这台树莓派上只接了一个无线键盘,直接就发现了,双击Raspberry Hub
下面的USB设备就可以连上了,这里还会提示安装一个设备驱动(虚拟USB HUB设备),允许就可以了~
最后实现的效果跟USB设备直接接在自己本地电脑上的效果是一样一样的,
查看设备管理器可以看到通用串行总线控制器
下面多了个VirtualHere USB Host Controller
的控制器设备