TinyCLR Ethernet Connection

I’m having an odd issue where I’m able to get an IP address using the Ethernet sample code on a SCM2060D Revision B, but not on SCM2060D Revision C.

Can somebody point me to revision change document? Trying to figure out if we hooked up something wrong on our custom board.

Thanks

There was only one rev released. Do you have insider or engineering samples?

Hey Gus,

Does that mean that only Revision B should be used?

I’m looking into it, see if I can find a PO for this batch. But it looks like we got them from Mouser.com

Mouser had them wrong initially on their website. Check the part number we have on the packaging. I am sure all your boards are the same, unless you got something directly from is as an early demo.

Hey Gus,

Confirmed that it came from Mouser. We have 20 in the box. They all are Revision C boards. Do you know the time frame Mouser had the wrong on their website? Maybe that is when we got them.

Attached a picture of the Revision B and C side by side.

Boards look almost identical. But different enough that Revision B gets an IP from DHCP but Revision C does not using the same software.

But if I’m understanding correctly, we should only be using Revision B boards, is that right?

Here is the code, very similar to the sample code.

//Reset external phy.
        var gpioController = GpioController.GetDefault();
        var resetPin = gpioController.OpenPin(SC20260.GpioPin.PG3);
        resetPin.SetDriveMode(GpioPinDriveMode.Output);
        resetPin.Write(GpioPinValue.Low);

        Thread.Sleep(200);

        resetPin.Write(GpioPinValue.High);
        Thread.Sleep(200);

        MainWindow.NetworkController = NetworkController.FromName
            (SC20260.NetworkController.EthernetEmac);

        var networkInterfaceSetting = new EthernetNetworkInterfaceSettings();

        var networkCommunicationInterfaceSettings = new BuiltInNetworkCommunicationInterfaceSettings();

        networkInterfaceSetting.Address = new IPAddress
            (new byte[] { 10, 0, 1, 89 });

        networkInterfaceSetting.SubnetMask = new IPAddress
            (new byte[] { 255, 255, 255, 0 });

        networkInterfaceSetting.GatewayAddress = new IPAddress
            (new byte[] { 10, 0, 1, 1 });

        networkInterfaceSetting.DnsAddresses = new[]
            { new IPAddress(new byte[] { 10, 0, 1, 240 }),
     new IPAddress(new byte[] { 75, 75, 75, 76 }) };
        

        //todo check that the mac address looks good
        networkInterfaceSetting.MacAddress = MainWindow.MacAddres; //new byte[] { 0x00, 0x4, 0x00, 0x00, 0x00, 0x00 };
        networkInterfaceSetting.IsDhcpEnabled = true;
        networkInterfaceSetting.IsDynamicDnsEnabled = true;

        networkInterfaceSetting.TlsEntropy = new byte[] { 0, 1, 2, 3 };

        MainWindow.NetworkController.SetInterfaceSettings(networkInterfaceSetting);
        MainWindow.NetworkController.SetCommunicationInterfaceSettings
            (networkCommunicationInterfaceSettings);

        MainWindow.NetworkController.SetAsDefaultController();

        MainWindow.NetworkController.NetworkAddressChanged += NetworkController_NetworkAddressChanged;
        MainWindow.NetworkController.NetworkLinkConnectedChanged +=
            NetworkController_NetworkLinkConnectedChanged;


        MainWindow.NetworkController.Enable();

        while (MainWindow.LinkReady == false) ;

        Debug.WriteLine("Network is ready to use IP:" + MainWindow.NetworkController.GetIPProperties().Address);

If revB work then I think your example is good.

Try these code below in your main() and let us know if it help.

  if (Power.GetSystemClock() == SystemClock.High)
                {
                    Power.SetSystemClock(SystemClock.Low, true);
                    Power.Reset();
                }

Is that only available on the pre-release? It does not appear to be an option on 2.0.0.0

2.1 RC1 is more scheduled for Monday. it is easier for everyone if you use that, of possible.

How many Rev b do you have?

OK. I’ll migrate to that one asap.

Looks like I have 2 Rev B and 22 Rev C boards.

I decided to program the Rev C boards that we have. And 16 worked, got an IP. 2 Rev C boards never get an IP. And 1 will not run at all.

So, it appears that I have a couple of bad boards. I’ll upgrade to 2.1 and try the code suggested and see if those 2 boards that don’t get an IP start working after that.

We have never shipped rev b to mouser or anyone. You just have gotten these from us.

Found the purchase order and 15 were bought. I have more than that, which leads me to believe that engineering samples got mixed in with this batch of boards.

Did you ship Rev B with the Development boards?

I’m going to try and see if that piece of code does anything to the boards that don’t get an IP once I update to 2.1

Ok great… You got me worried for a sec. Please trash the older ones for me. They are going to always be a problem for you. Or at least get a black marker on them.

Will do. Thanks

@Gus_Issa I guess SC20260D Rev A should go to the trash too?

Anything not listed on live website should not be used. So yes. B engineering samples are only to get users started early and not meant to be used beyond that.