3 votos

¿Cómo puedo hacer que los dongles PCAN funcionen con macOS?

Tengo un programa Perl que está ejecutando un par de servidores CAN para interactuar con una configuración de HIL. Y con las máquinas Linux conectadas es solo cuestión de:

ifconfig -a | grep can
ip link set can0 type can bitrate 250000
ip link set up can0

Y luego puedo hacer referencia a estas interfaces CAN en mi programa perl a través de archivos .ini:

Puerto 9921
socketCAN:can0:250

Pero en el sistema OSX, los dongles CAN ni siquiera aparecen con ifconfig -a. Pensé que solo tenía que instalar los controladores de Mac-CAN para que funcionara. Obtengo los dongles listados como disponibles con la herramienta de comando can_moni.

Si simplemente no es posible lograr esto en OSX, ¿hay alguna otra forma alternativa de hacerlo? Vi a alguien mencionar que sería más fácil hacer esto con un contenedor de Ubuntu en el sistema Mac. Pero no tengo experiencia con docker/contenedores.

5voto

Jose Chavez Puntos 645

Las interfaces CAN se manejan de manera diferente en macOS que en Linux. De hecho, se manejan principalmente como en Linux antes de que CAN en Linux se estandarizara en la interfaz SocketCAN.

Los dongles PCAN realmente funcionan bien en macOS y definitivamente puedes hacer que tu sistema funcione. Los he utilizado sin problemas durante años. Sin embargo, deberás codificarlo ligeramente de manera diferente a como estás acostumbrado en Linux.

En Linux, la interfaz SocketCAN significa que las interfaces CAN se enumeran como interfaces de red ordinarias con las que puedes interactuar usando comandos comunes como los comandos "ip" que también utilizas para configurar, por ejemplo, interfaces de red Ethernet. Eso no ocurre en macOS, y esta es la razón por la que no puedes ver la interfaz CAN con ifconfig -a. No se supone que aparezca ahí.

En cambio, en macOS, al igual que en Windows, cada fabricante proporciona su propia interfaz. Por lo general, esto es en forma de una biblioteca compartida (piensa en un DLL) que enlazas junto con tu propio programa para acceder a la interfaz CAN. Por lo general, también proporcionan varias utilidades para configurar velocidades de bits, temporizaciones, manejo de errores y para hacer volcados de paquetes, monitorear la carga del bus y otras cosas.

Para los dongles PCAN, puedes descargar esa interfaz específica del fabricante aquí:

https://www.mac-can.com

En esa página también encontrarás un programa de monitorización que puedes utilizar para ver rápidamente lo que se está transfiriendo en el bus.

Para usar esta interfaz con tu programa Perl, tendrás que crear enlaces de Perl para la biblioteca PCBUSB. No estoy al tanto de ninguna implementación de libre disponibilidad en este momento; tendrás que crear la tuya propia. Afortunadamente, la interfaz realmente no es tan complicada.

Ten en cuenta que hay un proyecto llamado CANAPI en marcha para crear una interfaz común para interfaces CAN en macOS, Windows y Linux. Sin embargo, su uso no es tan extendido (por ahora).

Otra forma de hacerlo es usar Linux en Mac. Utilizas un sistema de virtualización (como VMware Fusion, Parallels Desktop o uno de los muchos sistemas gratuitos y de código abierto) para ejecutar Linux. Luego, direccionas el dongle CAN, que básicamente es un dispositivo USB, en la máquina virtual, y es detectado por Linux como en una PC Linux normal.

A partir de ahí, puedes configurarlo como cualquier otra interfaz CAN en Linux utilizando el comando `ip`. Y luego puedes ejecutar tu programa Perl sin modificaciones. Hay un sobrecosto por la virtualización, por lo que dependiendo de tus requisitos de rendimiento y latencia, tal vez no sea una solución perfecta.

1voto

Oskar Puntos 1242

A menos que el proveedor haya proporcionado soporte de controladores a Apple, es posible que se necesiten suministrar controladores para el proveedor en macOS. Tu idea de ejecutar Linux como una máquina virtual será un camino bien documentado y soportado si solo tienes controladores de Windows o Linux (que ya tengas o te los suministren en la distribución)

Yo empezaría con una prueba gratuita de VMWare o Parallels y configuraría tu MV para que tenga paso de USB para validar que todo funcione con tu hardware elegido en el extremo del Mac / cable / dongle antes de que necesites pagar por una licencia.

No he utilizado otros motores de virtualización pero he escuchado muy buenas cosas sobre Virtual Buddy (y otras implementaciones ligeras) en hardware Apple Silicon:

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X