tdevmon on MIPS architecture

Hello everyone im new here and i wanted to use ioninja serial over ssh using a device with mips architecture... i was wondering is there a way to build a module and service for it?

To be more precise i am trying to build tdevmon driver and service for openwrt device since i need to use that to connect to my modbus devices and give out ssh ( openwrt device has wifi and everything ) could that be possible in any way? thank you very much

MIPS is not currently supported, sorry. It's on our TODO list, but not too high up, to be honest (people mostly run tdevmon on PCs and Raspberry Pis)

However, the kernel module is open source, so if you have experience in Linux Kernel development, you can try porting the tdevmon LKM to MIPS yourself (yes, porting is required, bare recompilation won't cut it, unfortunately).

If you're able to port the kernel module, I can provide you with the sources of the CLI app, too -- then you should be able to build the whole tdevmon on MIPS.

@vladimir well for now ive managed to do what i need on raspberry pi but having ioninja on MIPS ( openwrt based router ) would make it really useful for field debugging and testing.

the idea of having scriptable tool that can construct traffic ( modbus or any TCP based traffic for that matter ) wich is actual data flowing through the live automation system is something that makes my life so much easier. For example writitng a script that will "scan" modbus to get all slave responses so i know that all nodes are connected and online before parsing data in automtion system is a gift from gods 😉

@Vladimir I plan to work on porting tdevmon for aarch64 (arm 64 bit), if you could share the CLI app source code that would help build the entire tdevmon on aarch64, and check that it works successfully.

Cheers,
Bob

Hello Bob,

That's possible. tdevmon contains some proprietary code (mostly concerning the kernel-mode drivers for Windows) so I can't share the actual repo. But I can make a snapshot of what's required to build the tdevmon CLI and give you a link to that. Will that work for you?

Also, are you going to publish the results of your porting so that we can merge them into the main repo -- or is it some closed-sourced project? Either way is OK with us.

@Vladimir That works for me, I'm only working on Linux if there's a stripped Linux version that would be great if shareable, but if not snapshot is also good!

Yes I will merge into the main repo once it works on aarch64.

Cheers,
Bob

Extracted the non-proprietary code and published it here:

https://github.com/vovkos/tdevmon-linux

The user-mode part should build on any generic Linux box without a problem. The kernel module would require porting (at least, the write protection removal code).

@Vladimir thank you that is much appreciated! I was able to get the x86_64 version compiled. To get it working out of the gate (I'm on Ubuntu 20.04 VM x64) I ended up needing these two additions:

  1. sudo apt install libudev-dev
  2. libcore.a omitted the -ldl linker flag to resolve dl funcs, I was able to add it back in manually to the build files, wasn't able to track down where in cmake it's being omitted. I can commit those changes to the README in the future if you think it'll help.

I wanted to get the ARM32 env cross compiling working before tackling the aarch64, so I know my baseline is correct. I added an arm-linux-gnueabihf toolchain file to cmake, but that is not happy with "install FILES given no DESTINATION!" for devmon project.

I used that same compiler separately to compile kernel driver for ARM32 successfully, but that was without cmake. If you have a working ARM32 cross compile build file, or know what I might be missing any tips are welcome to get my env set up and ready to look at aarch64. I'll also keep debugging my setup as well. Thank you again for all the help!

Cheers,
Bob

Re missing dl -- try with the latest axl:

cd axl
git checkout master
git pull

then rebuild

cd ../build
cmake .
make clean
make -j`nproc`

libudev and dl issues are (probably) caused by axl tests; if the problem persist, simply comment line 51 in axl/CMakeLists.txt:

# add_subdirectory(test)

As for ARM cross-compiling -- I build and debug on a Raspberry Pi over an SSH channel, so I don't have a ready-to-use cross-compiling toolchain.

@Vladimir Thank you for the tips. I was able to get an ARM cross-compile toolchain and build env setup. It produced an ARM binary, which works on my ARM debian vm, so I'm guessing it could very likely work on a Pi as well. I'm happy to send my build files via commit, or pasting here if it could help you out.

Cheers,
Bob

That's great! Please send a pull request to tdevmon-linux; I will take a look and integrate the changes to the main repo after testing those on Rpi-3 & 4.

Happy New Year!