Dump of BAMs (Broadcast Announcement Message) with canutils - can-bus

Good morning,
I'm a embedded linux developer and I'm trying to dump J1939 CAN sentences on a iMX6 based board.
I tried saving RAW canbus messages on a file using the command
candump can0 -L > /tmp/fms_canbus
and everything works fine with NON BROADCAST messages.
However I'm not able to receive BROADCAST messages (BAM), it seems that no BAM message is recorded on the file.
As far as I know, in order to read BAM message, the socket should be opened with option SOCK_DGRAM, CAN_BCM, but it seems there is no CLI tool in canutils package that allows to perform an operation similar to the
candump can0 -L > /tmp/fms_canbus
Is there anyone that can help me fixing this issue?
Should I implement a custom tool or is there a standard utils allowing to perform the desired action?
Best regards
Giovanni

Related

Printing on Epson receipt printers from Windows 10 command line

I expect it to be possible to simply compose a notepad textfile with text and control chararcters (ESC/POS) and copy that file to an Epson Thermal Receipt printer. Amongst a lot of information that I found on internet, I could not find a sample text file that simply shows how to do such.
I was able to link the USB printer to lpt1 and when I use something like copy /b c:\test.txt lpt1, I get some output. I reached the printer but it doesn't understand the language so to speak.
I did find Epson documentation with the esc codes. It would be of great help if I had a sample text-file and some directions on how to place the control characters in that file.
The Epson information is not a course, it is a manual. That is why I get stuck I guess.
You can see the ESC/POS specifications based on this page.
TOP»POS › TECH.REFERENCE»ESC/POS COMMAND FOR TM PRINTER»Introduction
There is no document compiled in PDF etc., but perhaps it may be available by registering for EPSON's partner program. At least you can ask if it exists.
Epson Advantage Partner Program
LPT devices may also be used for questions like questions, but a more suitable one would be serial port device mode.
If you change the interface setting of the printer hardware from the printer class to the vendor class and install the serial port device driver, you will be able to communicate via the serial port.
Please refer to the user's manual etc.
However, in any case, if there is no paper, the cover is open, or some error has occurred, printing will not be possible.
And you can't know the status just by sending unilaterally on the command line.
In order to deal with such a situation properly, it will be necessary to create a program that communicates with the printer and requests printing, and in that program, monitor the status of the printer and deal with errors.

how to send the commands to a full duplex port

I am using XCOM v2.0. It comes with a hardware, and it will receive the data from the port com4 continuously, also sometimes I need to send command to this port com4 to control that hardware. The trick thing is, there is a option called "send new lines" in XCOM V2.0, If I want to send a command to the port, I have to check it to let the command work, otherwise the command will not work.
My goal is to understand this, and implement this command in my python code. Currently I could use XCOM V2.0 to real-time receive the data and send commands. But my python code does not work.
So XCOM V2.0 did something for my command, but how could I know? I do not have the firmware of that hardware, how could I monitor the com4 and see what commands I send to port com4? so I could do same thing in my python code?
at first I thought XCOM V2.0 just add \r or \n or any combination after/before my commands, but I tried every possbile combination and none of them work, you could even try this in XCOM V2.0, just add \n or \r or combination in the end of command, and do not check "send new lines", it will not work. Later I though XCOM V2.0 must send some hidden commands to stop the port receiving, and do sending, but how to figure out it?

Is it possible to access a Chromebook via ssh through USB?

My employer has asked me to prepare for testing several thousand Chromebooks (mix of models/manufacturers) to refurb/flip. This may be a recurring thing.
Most or all of these will be old enough that CCD will not be available. I'd like to connect a widget such as a Raspberry Pi to the USB and have it automate testing as much as possible.
I know I can use keyboard emulation to inject commands, but I'd like to get a crosh session running over USB so that I can read info from the DUT besides just controlling it.
Google shows bazillions of returns about using a Chromebook as an ssh terminal but what I'm looking for is the opposite. I'm prepared for the answer to be a simple "no" but I'm concerned because I can't find that anyone else has asked this question. I don't think I'm that creative, so I suspect my Goog-fu is weak.
The answer appears to be "no". However I solved it another way; using "gadget mode" I have a Raspberry Pi ZW enumerate as a keyboard and a serial port. I put the Chromebook into Developer mode, open a developer shell with ctrl/alt/F2, or on a PC/linux or Mac system open a terminal window and type "sudo su" (these have to be done manually). Then I have the RPi issue this bash command to identify the serial port "in the blind":
SERPORT=/dev/serial/by-id/$(ls /dev/serial/by-id) # Chromebook or PC/linux
(or)
SERPORT=$(ls /dev/cu.usbmodem*) # Mac
Now I can have the RPi inject commands via the keyboard, put ">$SERPORT" on the end of each command, and the output comes in the RPi gadget serial port. The RPi then packages the data and forwards it over WiFi to our CRM. It's working nicely for Chromebooks, PCs booted into linux, Mac desktops and Macbooks.
Edit:
The company I work for has actually turned this into a product and so I'm not sure how much detail I should share, but...
I learned my way around gadget mode on the RPi from this link. There are examples for setting up a keyboard and a serial port. Using the templates in that link, I made a device called /dev/hidg0 which emits keyboard scancodes from the RPi to the Chromebook. I also made a device called /dev/ttyGS0 which the Chromebook sees as a serial port.
So I send keystrokes with some python like:
with open("/dev/hidg0","bw") as hid:
hid.write(blah)
and then have the Chromebook send text to the serial port, which I then read by looking at /dev/ttyGS0
Hopefully this will be enough to get you started. I found the isticktoit link very helpful.

See events from my application together with dissected communication in Wireshark

I sometimes need to use Wireshark to analyze communication issues with a particular protocol that my application uses. Wireshark already comes with a dissector for the protocol, and displays the communication in the best possible way I can imagine.
But I also need to view the actual communication together with events happening inside my application. The application is capable of generating various logs and traces. The information in them is actually more structured, but for the simplicity, let's say it is just a sequence of entries where each entry has a timestamp and a textual message.
Currently, I have to place the Wireshark and the logs alongside on the screen, and painfully correlate the timestamps in order to figure out how they belong together. In order to make my analysis much easier, I would like to view the information from my logs merged together with the communication protocol messages in Wireshark, properly sorted by their timestamps.
I found that Wireshark has a Merge capability, so this is where I am directing my investigation. I think that with some effort, I might be able to do the following:
1) Design my own "protocol", and generate PCAPNG file from my application, with the event timestamps and messages, and
2) Developer a Wireshark dissector for the above, so that I can view the events in Wireshark.
The first part of my question is whether my approach is the right one.
But I also wonder whether I cannot achieve what I want in some simpler way. Ideally, I would like to reuse something that already exists, and specifically, avoid developing a specialized dissector. Isn't there a protocol with identical features (just timestamps and textual messages), with a dissector that Wireshark already has, that I can use?
Maybe you could make use of syslog along with syslogd or rsyslogd?
One way to inject arbitrary messages into trace files without even having a syslog server is to make use of nc (netcat). For example:
echo -n "Hello World" | nc -w 0 -u 1.1.1.1 514
Wireshark will also dissect this message as syslog traffic. This can be useful when trying to insert "markers" into capture files near where an event of interest occurs.
In any case, making use of syslog facilities would save you from having to write your protocol.

Which is the best way to get real time data from avaya cms server?

I am sorry if this question goes out of topic but i forced to ask here as there is very limited resources found over the net on this.
I am looking to implement system to get real time data from avaya cms server I did lot of RND on JTAPI but it has got some limitations it is not giving all events all data as stored in CMS database. I also tried connecting cms database using Java but no success because it also give historical data in delay of 30 mins.
Is it possible to get the same technically using JTAPI,TAPI anything. Or is there anyone who have used any paid tool by avaya which is cheaper and can solve this purpose.
I saw clint but don't intend to use. Please let me know the ways if anyone had done this.
Your CMS may provide a feature known to me as realtime socket. It is a service pushing data about skills/splits, vdns and vectors over a network socket.
It is virtually the same what you'll find in hsplit and so on but realtime.
Pushed data can be configured by your cms admin.
If you are looking for call data you may take a look at *call_rec* table in cms.
You can use clintSVR which is a high level tool based on CMS CLINT. By using clintSVR, you can use CGI, OCX and C++ interfaces to get the real time data from CMS.
As others have said you can get this from realtime reports. You'll need to scrape them.
RT socket is just a set of wrappers around clint for running reports. It takes the realtime report data and sends to to a socket.
You can roll your own real time reports with clint and feed that to whatever needs to ship the data. A sample realtime report can be run from the command line like:
/cms/toolsbin/clint -u your_user <<EXECUTE_DONE
do menu 0 "cu:rea:Meas"
do "Run"
do "Exit"
EXECUTE_DONE
Here is an example of running a report directly
Run report directly:
/cms/toolsbin/clint -u ini <<EXECUTE_DONE
clear
run gem "r_custom/cr_r_3"
do "Run"
do "Exit"
EXECUTE_DONE

Resources