Re: hacking the uv3r (re-flashing the firmwere)
- Yea the code is mainly in C with a sprinkle of assembly for timing. However, I can take care of the assembly when needed.
For anyone who does not want to wait for the step by step instruction that I will create this weekend (time permitted), I uploaded everything I have to github. The repository contains all the code for programming as well as the first firmware and a connection diagram.
everything should be self explanatory, but feel free to ask any questions.
Here are a few notes:
**** Remember, once you erase the original firmware, there is no way of getting it back, so the radio will be a brick until we finish the firmware; but that is what we are here for. ****
For the +5 and +9 volts needed, I used a dual bench power supply. In the connection diagram I show the +5 from the arduino, which I believe should work, but I did not try it. Also, the +9V could come from a 9V battery, but I have not tried that as well. If anyone uses the 5V from the arduino and the 9V from the battery successfully let me know. The specks on the chip calls for:
Vdd : 5.0V+/-10%, Vpp:9.0V+/-10%
Lastly, any npn transistor will work, the one I used was the one that I first grab. You could also program the chip by just manually connecting the vpp to gnd when running and to +9V when programming for each command manually (that is how I started the mod), but it gets old very fast.
Once you have everything hooked up (I soldered 5 wires directly to the pads) run the arduino sketch and open the serial monitor. Remove the battery and connect the power connector to the radio (this seems to help with programming, otherwise the flashing fails every once in a while).
Type: RC000 C0FF<enter>
And you should see chip id: 82
The other values indicate that the chip is locked.
If you get a 0 for the chip id, then something is wrong. If you get something other then 82 then let me know, because I assume in the code that the chip id returns 82.
Then you can type: E <enter>
This will erase the chip
command: F <enter>
will set the config bits
command: PC000 60 1E 00 1B 23 C0 C4 00 44 6D F0 0D 3E 00 D5 C5 ##
This will program the address C000 with 16 bytes
Now if you type: RC000 C0FF
you should see the bytes programmed
If you get this far, then that means you can re flash the radio.
You will need to convert the hex file into the P commands to flash a full file. For now I use gvim to format the hex file and copy and past into the serial command. I will have something more convenient by the weekend.
If anyone successfully repeats this mod, please let me know so I can document any changes needed.
If you want to help, then first place to start would be to help with documenting the code in more details. This will ensure that you understand everything, as well as help others understand.
Also, helping with the arduino code, and a python interface would greatly help.
--- In UV-3R@yahoogroups.com, "Sivan" <sivan.toledo@...> wrote:
> I will be happy to help assuming that the code is in C, not in assembly language.
> --- In UV-3R@yahoogroups.com, "Lior" <lelazary@> wrote:
- If I had my choice, I would like to see a fully PC controllable HT.
Make the firmware work as a computer controlled radio. Much like the Icom PCR 100/1000 radios. Pick a radio that has good support inside Ham Radio Deluxe and duplicate that command set.
The LCD will show basic information, and the HT would be unusable without a computer.
Why? Think of the $2000 satellite base stations used for sat tracking. Now imagine a $50 HT with the same capability plugged into sat-tracking software.
It would also allow the HT to be used as a frequency-agile-link transceiver on repeaters.
Like I said, find a radio currently supported by Ham Radio Deluxe and Sat trackers, and emulate their command set.
I have done this for another device and it was easy once you know how to program the real device. Using an established command set removes much of the complexity (thinking of a good UI) from the project.