I have built a prototype device using an Arduino Nano Every which communicates (using CI-V commands) with Icom radios, to augment control of them. Currently I use the default addresses of the “target Radio” (set to 0x94 - 0x97 via jumpers on the custom PCB) to tweak the commands it sends, but it would be useful if the radio’s model could be determined to allow my device to tailor the range of some of the functions it provides e.g. there are 8 Mode options on an IC 7300, but 20 on an R8600. I have not (yet) found a command which yields the Model type. An alternative method could be to use the small differences in the command sets, and probe those, but that may not be unique to each Model. Any suggestions are welcome. Here is my prototype device https://youtu.be/-kn3Pd1ENI8.
-
$\begingroup$ Welcome to the site! I think you're asking: "is there a CI-V command to fetch a product identifier for the connected radio, i.e. without knowing/selecting it ahead of time?" I'm not seeing anything offhand, but hoping someone can chime in or maybe elaborate on your probing idea. $\endgroup$– natevw - AF7TBCommented Jun 13, 2022 at 17:43
-
$\begingroup$ Thanks for the reply, yes you are correct. So far I haven’t seen a “model id” command, nor am I aware of any undocumented CI-V commands. A work around is possible, I could sacrifice a couple more of the hardware config bits or create an additional configuration process - fortunately I do have a vacant set of pads on the PCB for an (as yes unused) EEPROM to provide non-volatile storage. $\endgroup$– anoracknophobiaCommented Jun 14, 2022 at 4:08
-
1$\begingroup$ It appears that the simple answer is that no command exists. Thanks to all who responded. $\endgroup$– anoracknophobiaCommented Jun 15, 2022 at 7:50
-
$\begingroup$ The best thanks one can get is a satisfied visitor. The second best thanks is a checkmark next to the most correct answer. $\endgroup$– user21417Commented Jun 15, 2022 at 21:55
2 Answers
ICOM uses "other" CI-V commands to interrogate the radio. If you have any of the radios which use their "Cloning Software" you will notice that there is an "Information" button. This typically will display the serial number of the radio. Some radios give more information. Some such as the current IC-9700 give nothing at all (which may be firmware dependent).
The only way to get this CI-V information is by serial sniffing. What I have found with 5 of the current D-Star radios is that they each have a different "model number" of 4 digits followed by 8 digits of serial number, thus a 12 digit number. There is a special CI-V command based on that 4 digit "model number" to prompt the radio to send back the full serial number.
For example, the ID-5100A sends:
FEFEEEEFE034840000FD
And the ID-4100A sends:
FEFEEEEFE038660000FD
to reply with the full serial number which reads (for ID-5100A):
3484nnnnnnnn, where "nnnnnnnn" is the serial number of the radio.
AFAIK, there is no command to retrieve meta-information about the transceiver.
Probably the most useful information necessary to ID the model is the address.
The default address of Icom models is unique to that model. The assumption is that you already know the model you are sending commands to, because you are sending it to a specific address. (This ignores the convenience of some commands supporting $00.)
There are lists of addresses and models out there, but I don't know if there is a canonical location on the internet. "CI-V Bus Addressing" as search terms will get you close.
I suppose you'll have to have this map in your software, with the ability to modify it as models are released, or as people change the address manually (for example, because they have two identical models they want on the same bus at the same time).
Or, perhaps you can send a simple command to $00 and see who responds, and use that to learn what the models are on the bus based on the from address, defaulting to some generic behaviour and perhaps notifying the user (or a log) that there is an unknown model on the bus.
Depending on how constrained you are for interfacing, a map of models and addresses with a single exception rule to allow for a one identical model on the bus might suffice? For example, you know that \$94 is probably a 7300, and thus \$95 would also be a 7300 because the next model Icom released (IC-R8600) is guaranteed to be $96 (because they always release even valued addresses).
This does not allow for address customization, but if your map has to be fixed this trick might get you 80% there.
-
$\begingroup$ Thanks for your comments. It was always a long shot. The custom PCB has some header pins that I can allocate to define the model of the target radio, and/or the address. Alternatively I could set it up in “config” mode and store it in non-volatile EEPROM. $\endgroup$ Commented Jun 14, 2022 at 20:15
-
$\begingroup$ It may be worthwhile seeing how other such devices are described. There is at least one commerical product that claims to work with any Icom (even one not on their supported list). So I'd be curious what they say in the docs about how to configure the devices on the bus. $\endgroup$– user21417Commented Jun 14, 2022 at 20:29
-
$\begingroup$ I’ll probably adopt a workaround solution in which the attribute range is tailored by either hardware (jumpers) or comfiguration stored in EEPROM. $\endgroup$ Commented Jun 15, 2022 at 7:55
-
$\begingroup$ Remember that the host has an address, as well. So one can always tell the host things it maybe ought to know. This device does not have to be deaf to the world in terms of config. $\endgroup$– user21417Commented Jun 15, 2022 at 16:03
-
$\begingroup$ Admin : please delete if not allowed. I put progress and info on FB at facebook.com/groups/2820765234809784/?ref=share_group_link $\endgroup$ Commented Jun 16, 2022 at 14:38