Simulating serial port programmatically without installing driver - serial-port

com0com is a great program to have virtual serial ports.
My question: is there any library which I can use for simulating serial ports (COM, USB and so on) programmatically in my application without install extra software for such virtual devices?
something like making virtual device in user space?
OS: Windows

Free Virtual Serial Ports by HHD Software Ltd is good for you (License Freeware).
Excerpt:
This device driver implements the functionality of the virtual serial
port device. It operates in user mode space, unlike most other device
drivers, making the system more stable and secure.
Read more.

All similar software use a special kernel mode driver. It is not possible create a virtual COM port from user space.

Related

Is it possible to access virtual serial ports via Web Serial API?

I seem to only be able to access physical ports. I do want to access virtual ones like ones created with virtual null modem or virtual serial port driver.
Does anyone know if this is possible.
Chrome enumerates serial ports by calling SetupDiGetClassDevs with GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR. As I discovered when implementing this enumeration logic there are a surprisingly large number of ways to ask Windows for a list of all available COM ports. The advantage of this approach being that it provides device information which can be used to get the human-readable name of the device and USB product identifiers if it is a USB device. It is likely that a virtual COM port driver may be creating the device in a way which prevents it from being discovered this way.
I've created https://bugs.chromium.org/p/chromium/issues/detail?id=1238369 to track this as a Chrome bug. Please comment on whether you are using a different virtual serial port driver than the one mentioned there.
I managed to get Chrome to see the virtual serial ports using com0com on Windows 10 21H1 (OS Build 19043.1110). Chrome connects to the port successfully and it works as expected:

Forcing BLE advertisements to use a public mac address

I'm trying to simulate a ble beacon, and I'm successfully able to broadcast advertisements but I have not found a way to force the advertisements to use a public address. I'm working with a device that will only listen for beacons with a static and public MAC address (I cannot control this, as annoying as it is). Is there any platform or library that would allow me to set/spoof the MAC so that the listening device believes it is a static public MAC? I have access to linux, android, and windows machines and can develop in pretty much whatever language I need to to achieve this.
You can definitely do this on Linux through the following sequence:-
#sudo btmgmt power off
#sudo btmgmt privacy off
#sudo btmgmt power on
Then launch bluetoothctl and start advertising:-
#bluetoothctl
[bluetoothctl] advertise on
You can scan for your device using any app on Android (e.g. nRF Connect) and double check that it is the static/public address through Linux using the command:-
[bluetoothctl] show
I hope this helps.

How do I program my atmel develper board with sample program on the usb

I have successfully compiled a sample program, which came with a developer board. I have also connected to the board via putty and ran the executable which was on the board from the factory. But I can not push my elf file to the board apparently because the debug/programming interface is missing. I can not figure out what the issue is. I turned off Win7's firewall, and defender before I installed the driver. Enclosed are a couple of pics; do I need to purchase a JTAG to usb cable? Right now, I am just connected to the board via the usb interface which is on the board. But the board comes with JATG, and miniJTAG.
#DigiNinja- I have AT97SC3205T-SDK2. Can you also comment on the firewall? Do I need to keep win firewall and defender off all along or just while I install the USB driver?
I posted a pic of the board with all the other interfaces.
Do I need one of these
Here is a pic of Device Programming options:
#all- Thanks. I have a starting point. I need to read the docs now.
The user guide provides the info you need, and can be downloaded here: http://www.atmel.com/Images/Atmel-8528-TPM-I2C-SPI-Development-Kit-UserGuide.pdf
From the user guide:
"The USB bootloader remains pre-programmed in ROM memory. This bootloader may be used to either reload the TPM demonstration software images or to load the SAM4S ARM demonstration software. The kit has a JTAG connector that can be detached from the kit and connected to the mini JTAG connector on the board. This will allow the reprogramming of the SAM4S ARM."
So that means you should be able to load new software images using the pre-loaded USB bootloader. If you don't want to use the bootloader or it's been removed then you will need to use JTAG.
From the user guide: "For more advanced in-system programming techniques, the In-System Programmer SAM JTAG ICE combined with Atmel Studio® can be utilized over the provided JTAG interface port to exercise complete programming control over the processor."

API to access GSM signal on computer

Hope this is the right place to ask - assuming so as it is related to programming.
I am looking for some hardware (say a dongle) that would open up an API for my computer to a SIM card. Does that exist anywhere?
The idea would be that I can then use my existing SIM card on its existing network/contract and with a bit of code, send/receive calls and texts. I figured that if a phone can be programmed to do it why can't a computer? I just need the hardware.
Any suggestions if this kind of thing is possible? Even by maybe integrating a phone?
You can use AT commands with any modem or phone, whose driver exposes a modem port when you connect it to a computer. Plug in the phone or modem, and go to Windows Device Manager, and look under "Modems" and see what you've got. From "properties" of the Modem, you can see which COM port it is on.
AT commands are an older method of communicating with a modem. There is a standard set of commands for GSM/GPRS/3G/4G devices available from 3GPP.org, here. Manufacturers add their own proprietary commands for more obscure functions. Many but not all of these are in the public domain.
Some newer plug-in modems may appear as a network adapter (you can see this in Windows), due to their drivers. In this case, you can use the following interfaces:
on Vista: NDIS, proprietary interfaces
on Windows 7 and 8.x Desktop apps: Windows Mobile Broadband API
on Windows 8.x, in the Metro/app area: Windows.Networking and MobileBroadband APIs.
on Windows 10, UWP, there are UWP APIs here. But they do not give as much functionality as the Desktop APIs.
On Windows 8.1 and Windows 10, if the appropriate drives are present it is possible to use the new MBIM interface via the desktop Mobile Broadband DeviceServices API. Mobile Broadband Interface Model spec available here.
On Linux, use AT commands via the serial port.
I'm a bit puzzled by your requirement to make (voice?) calls via a phone connected to a computer. Do you mean Skype? In this case, of course, you wouldn't need any interface for making calls, you would just open an IP connection over a data session - which can be done via any of the above interfaces.
(added this comment as an answer, as there was more information)
I use this GSM device: http://www.mikroe.com/click/gsm2/ connected to a basic UART like: https://www.sparkfun.com/products/718?gclid=CIj1xOzbur4CFUVbfgodCpQASQ
Then use AT COMMANDS.
I also use a piece of software called QNavigator to inspect the modem/gsm: http://www.soselectronic.com/?str=1329

Activesync connection between two USB-host controllers

For a hobby project I wish to develop some stuff for a WinCE 6.0 device. Ideally, I would have an activesync connection to debug from Visual Studio. The OS appears to have all the prerequisites in place, but I'm not sure about the transport. What are my options?
The device has a USB port which can be used to connect e.g. flash drives for mp3 playback, so this seems to be a USB host port. Can I use this to obtain an activesync connection? I guess using a usb-to-serial cable on both pc and WinCE device could work. Or is there a RNDIS way perhaps?
If possible I rather not disassemble the unit, but if my chances of finding a USB client port or wired ethernet are nonzero I could consider that. Any thoughts?
You can not use USB host port for Activesync connection.
But if it is USB OTG (Both host and client) port, you can use activesync using USB OTG or USB Client functionality.
Your BSP should support USB Serial Client functionality (Search SYSGEN_USBFN_SERIAL sysgen variable in catalog items).
Also, your USB driver (lower level driver) should support USB Client functionality.
ActiveSync will work on a serial cable, so the idea of using an USB-to-serial adapter may work. But you need to have drivers for it in the OS image. There are some CDC drivers and FTDI provides drivers for their chips. You may be able to load them on the device, copying them using a USB thumbdrive and modifying the registry using a registry editor for windows CE, but that's not granted. Windows CE also supports RNDIS compatible USB to ethernet adapter but honestly I don't know if any device of this kind is currently available on the market. If your device has wi-fi connectivity you can skip using ActiveSync and debug over the network.

Resources