Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

DIY Installing CCS Retrofit in US Model S

This site may earn commission on affiliate links.
I got some requests to write a small tutorial on how to install the CCS retrofit in a Model S. This is a sister poster of the Model X tutorial, although I was successful due to reasons that will become clear later on. Unfortunately I did NOT take any photos when I did this, but the process is straightforward, and there are some nice videos that can be used as guidance. So let's start.

The car

This tutorial is for a Model S Refresh version (2016-2020). My understanding is that the steps for the previous Model S are the same, but I'm not 100% sure. The kit is slightly different, as well as the wire harness, because one has to deal with a gen1 or gen2 charger. What I'm showing here is for a gen3 charger, but I expect the differences to be minimal. In fact, there was only one way to connect things properly in my case, and I'm sure that's also the case for the old Model S, so there shouldn't be any problems.

The requirements

- The CCS kit. It can be bought at any European Service Center (SC) for 249€, including installation (but if you are reading this, you don't want them to install it). In fact, it is offered in their shop. They will ask for the VIN of the car, but that shouldn't be a problem. The real problem is that they won't ship abroad, so you need an address in a European country to buy it. You can also look for resellers, although be ready to pay a hefty extra.

- Gateway access. More precisely, you need to be able to add and change entries in internal.dat. Normally root access provides this functionality, but if your firmware is new enough (if I'm not mistaken 2020.40+), there is a cryptographic lock in some entries, and you won't be able to change them. So either they are correct right from the start or you look for a nice guy in a SC that can do this for you. User level toolbox access (the one you get if you pay) most likely won't allow you to do what you need to do (but SC access level will).

- Ability to redeploy or a software update pending. A service-redeploy is enough.

- If you are doing this at night or in a garage, make sure to bring a torch.

The steps

As I said, I didn't take any photos, but I found this video very useful. Skip the boring parts and start at 1:45. Ignore everything the guy says about some work you need to do in the frunk, most likely that was a different story, completely unrelated.

Let's open the box with the CCS kit:

Box.png


There you see the harness (the Tesla tech is holding it), the ECU on the right, and the (useless in our case) adapter still in its box. Do not forget the little bag in the box, see next picture:

SmallBox.png

It has some retainers to secure the ECU to the back seat frame.

Hardware part

0. SAFETY FIRST. Lower the windows to mid level and open all doors. Disconnect the 12V battery and the HV loop (I normally do it in this order). Leave the frunk open. Wait ~15m for the condensers to discharge, you are going to operate close to the main charger and you don't want to die. Now you can access your car safely and if you close a door you'll be able to open it. If you accidentally close the frunk, you can always use the emergency release which is located next to the front wheels.

1. Remove the backseat. There are two pillars with brackets one needs to deal with. There are several pages explaining how to do this. For instance, you can check this thread. The good old service manual that circulates around for the old Model S also contains useful instructions.

One has to be careful with the different connectors (in red circles). If I remember well, one is related to the heated seats, and the other to the seatbelt warning for the passengers on the rear (this one is irrelevant for US cars), but even if you don't have heated seats, be careful, just in case. The white brackets (the white circle that is not a connector, yes, I should have chosen another color) might need a replacement. I got the P/N wrong, but if someone knows the right P/N, that would be welcome. In any case, I reused my brackets and so far so good.
Backseat.png



2. Connect the wiring harness to the gen3 charger. One has to (a) disconnect the existing cable, (b) connect the existing cable to the wiring harness, and (c) connect the harness to the charger. There is only one way of doing this right, because there is only one way things fit. So it is impossible to do it wrong. The circles show the wiring harness connected to the main charger and the battery cable connected to the wiring harness. The side we see in the photo is the RH.
Charger.png

I know, the picture is lousy. Sorry.

3. Install the CCS ECU and connect the wiring harness to it. Again, the connection part is straightforward. The installation is easy: the ECU has some sort of plastic studs that can be inserted in certain holes of the frame that holds the back seat (this small bag with stuff that I said not to forget? It has the studs). There are soooo many holes that you need to choose were to put the ECU, but I tried to put it close to what the (lousy) picture shows:

ECUIn.png

That thing in the big red circle is the ECU. The holes are such it fits perfectly well. I marked a stud with a small circle, so you can see what I'm talking about.
You might want to use the zip ties to secure the harness to the back seat frame.
MoreWire.png


4. Reinstall the backseat. Push hard down.

5. Reconnect the HV loop. Reconnect the 12V. I also follow this order.

Congratulations! You are done hardware-wise. That was the easy part. Now things become complicated.


Software part: Configuration

Case 1: I rooted my car and I'm not worried about the cryptographic lock (my fw is old enough, under 2020.40)

1. Get a copy of your internal.dat. Normally one would use "gwxfer gw:internal.dat ./i.dat". You might need root privileges, so do a "sudo -i" first.

2. Edit internal.dat. I use Vim but you might not be a masochist like me. Look for the entry "otherfastchargeallowed" and make sure it is set to 1. This entry is protected by the cryptographic lock. You might not be able to change it, but hey, anyone that ever bought a CHAdeMO adapter should have it set to 1.

3. Go to the end of the file internal.dat and add the entry "plcadaptertype 1"

4. Save the file.

5. Upload it back to the gateway
with "gwxfer ./i.dat gw:internal.dat" Guess who has forgotten to do this more than once...

6. Reboot the gateway with "emit-reboot-gateway"

7. Now the car is properly configured, but the CCS ECU most likely is not. Let's go through the two possible options to tell the car to push the right firmware to the CCS ECU:

Case 2: I have a friend at a SC

1. Tell your friend to set "otherfastchargeallowed 1" and "plcadaptertype 1" in the configuration of your car (internal.dat of the gateway).

2. Invite your friend to an expensive restaurant. He/she deserves it.


Software part: Redeploy

Case 1: I have access to the cid-updater, I don't want to update the firmware of my car

1. You can do redeploys. Perfect.
Make sure the service cid-updater is up and running. If you have it disabled on normal boots, I recommend you change your boot options and enable it right from the start (just to do this), otherwise weird things might happen if you wake it up manually.

2. As root, use netcat to connect to the cid-updater service with "nc cid 25956" cid is just an alias for the right ip address, and 25956 is the port where the cid-updater is running.

3. Launch a service-redeploy. If I remember well, the command is simply "service-redeploy"

4. Wait until the car is done. You can run "watch" in the cid-updater interface to see what your car is doing, but most likely you'll need to open a new terminal and connect again to the cid-updater.

Wait! My car is not doing anything! Most likely it is, a service-redeploy takes quite some time. First, the car gathers all the hardware info and all the data it has to redeploy, and believe me, this takes ages, and the car looks like it's not doing anything. But if you run "watch" in the cid-updater, you'll see it's "downloading" data from the car itself to some other locations.

5. WAIT! My car is NOT DOING ANYTHING/it's doing something else!
Do you have a pending update? Either use it to redeploy or clear the update before redeploying, if you don't want to update. Try the command "cleanspool" if you have trouble with this. The cid-updater might not want to start the redeploy if it's actively downloading data for an update. It should be idle.

6. At some point, when the car has et everything up, you'll be prompted to run an update. It is NOT an update, it's a redeploy, but it looks similar. You say OK and wait. You can check the progress of the redeploy from the app.

7. Upon reboot, your car should be CCS capable. Yay!

Case 2: I don't have access to cid-updater or I want to update or I have a very good friend at a SC

1. Just run the update in your car or ask your friend to force a service-redeploy. Upon reboot, your car should be CCS capable.

2. I'd say this is "beer-level" help, not "restaurant-level". So invite your friend to a beer.


Ok. Where can I buy a CCS adapter?


Unless you have a Korean friend that can smuggle a Tesla OEM adapter to you, you might want to check this shop. Mind you, due to the war there might be delays in deliveries, but quality is top.

I hope you find this useful. I'll be happy to answer any other questions you might have.
 
I guess this is for older S models that do not natively support the CCS adapter Tesla will be selling to the US customers. As I have said, my 2020 supports the upcoming Tesla US CCS adapter. I imagine I can just wait for the US adapter. Also, if you bought a Euro CCS adapter, isn't that CCS2 and not compatible with the US CCS1 connectors? Thanks for any clarification.
 
The kit is slightly different, as well as the wire harness, because one has to deal with a gen1 or gen2 charger.

Gen1 can't be retrofitted. That one required charger to replace.

This manual is great for tegra users.pre 2018

Intel are different but still point is same add line to config.

Here is part numbers of parts/retrofit
 

Attachments

  • 2_5465314067042278699.pdf
    266.3 KB · Views: 635
Thanks guys for all the extra info.

@DerbyDave Yes, at some point Teslas stated to include a charging ECU. In the evhub shop webpage I linked they explain this point further:

“Confirmed for work on MS/MX manufactured after 02.2020

Not working MS MX prior to 02.2020.

All cars manufactured before needs a retrofit + config change”

So the retrofits are for earlier than 02.2020.

@AlexUA I didn’t know about gen1, but most likely you are right.
 
Looks like the config has plcSupportType besied the two you mentioned as well. Should we change all three of them? Looks like plcSupportType is for Model 3 and Model Y but I don't know if this variable is needed for S and X

JSON:
{
            "accessId":70,
            "codeKey":"plcSupportType",
            "content":{
               "enums":[
                  {
                     "codeKey":"None",
                     "description":"",
                     "value":"0"
                  },
                  {
                     "codeKey":"ONBOARD_ADAPTER",
                     "description":"",
                     "value":"1"
                  },
                  {
                     "codeKey":"NATIVE_CHARGE_PORT",
                     "description":"",
                     "value":"2"
                  }
               ]
            },
            "description":"Type of support for PLC charging standards",
            "products":[
               "Model3",
               "ModelY"
            ]
         }

Other variables you mentioned:

JSON:
{
            "description":"Type of PLC relay adapter installed",
            "content":{
               "enums":[
                  {
                     "codeKey":"None",
                     "description":"",
                     "value":"0"
                  },
                  {
                     "codeKey":"GEN3_EU_CP",
                     "description":"",
                     "value":"1"
                  },
                  {
                     "codeKey":"NATIVE_CHARGE_PORT",
                     "description":"",
                     "value":"2"
                  }
               ]
            },
            "accessId":"plcAdapterType",
            "codeKey":"plc_adapter_type",
            "products":[
               "ModelSX"
            ]
         }

JSON:
         {
            "description":"non-Tesla fast charging allowed",
            "content":{
               "enums":[
                  {
                     "codeKey":"FALSE",
                     "description":"False",
                     "value":"0"
                  },
                  {
                     "codeKey":"TRUE",
                     "description":"True",
                     "value":"1"
                  }
               ]
            },
            "accessId":"otherFastChargeAllowed",
            "codeKey":"other_fc_allowed",
            "products":[
               "ModelSX"
            ]
         }
 
  • Helpful
Reactions: remyygaa
Looks like the config has plcSupportType besied the two you mentioned as well. Should we change all three of them? Looks like plcSupportType is for Model 3 and Model Y but I don't know if this variable is needed for S and X

JSON:
{
            "accessId":70,
            "codeKey":"plcSupportType",
            "content":{
               "enums":[
                  {
                     "codeKey":"None",
                     "description":"",
                     "value":"0"
                  },
                  {
                     "codeKey":"ONBOARD_ADAPTER",
                     "description":"",
                     "value":"1"
                  },
                  {
                     "codeKey":"NATIVE_CHARGE_PORT",
                     "description":"",
                     "value":"2"
                  }
               ]
            },
            "description":"Type of support for PLC charging standards",
            "products":[
               "Model3",
               "ModelY"
            ]
         }

Other variables you mentioned:

JSON:
{
            "description":"Type of PLC relay adapter installed",
            "content":{
               "enums":[
                  {
                     "codeKey":"None",
                     "description":"",
                     "value":"0"
                  },
                  {
                     "codeKey":"GEN3_EU_CP",
                     "description":"",
                     "value":"1"
                  },
                  {
                     "codeKey":"NATIVE_CHARGE_PORT",
                     "description":"",
                     "value":"2"
                  }
               ]
            },
            "accessId":"plcAdapterType",
            "codeKey":"plc_adapter_type",
            "products":[
               "ModelSX"
            ]
         }

JSON:
         {
            "description":"non-Tesla fast charging allowed",
            "content":{
               "enums":[
                  {
                     "codeKey":"FALSE",
                     "description":"False",
                     "value":"0"
                  },
                  {
                     "codeKey":"TRUE",
                     "description":"True",
                     "value":"1"
                  }
               ]
            },
            "accessId":"otherFastChargeAllowed",
            "codeKey":"other_fc_allowed",
            "products":[
               "ModelSX"
            ]
         }
Yes, plcSupportType is for Model 3/Y, and you don't need it for Model S/X. I didn't use it and my car understands CCS.
You of course need otherFastChargeAllowed set to 1.
You don't need any other keys (fastCharging and euvehicle can be 0, for instance).
 
  • Like
Reactions: Denny Hsu and FeeYe

EDIT: Sold out, apparently
Will the one from Korea work on a Model S that has the CSS Adapter Support Enabled ? The description says Model 3 and Y
 
U9fe04ea447a4421b8efb7a73a58d0395w.jpg



Does this look like that same Korean adapter ? I found it from China for $75 wondering what might be different, it says

CCS Combo 1 Tesla​

Be careful with the max current rating. You want it to be rated at 400A or more for old Model S/X (up to 160 kW). For Model 3/Y or newer S/X you might need more. You don't want that thing to melt or catch fire while charging. I know EVhub shop runs temperature tests of every adapter, and for sure the Tesla adapter is fine as well.
 
U9fe04ea447a4421b8efb7a73a58d0395w.jpg



Does this look like that same Korean adapter ? I found it from China for $75 wondering what might be different, it says

CCS Combo 1 Tesla​

It doesn't look like the same one. No locking pin, and the part where the other plug connects appears to be two sections, not just one. It may be a functional passthrough adapter, but it's not a copy of the official one. It looks more like the EVHub adapter. Indeed, from this angle it's hard to tell if that's even CCS1 or CCS2 (the upper portion of the station-side does look like a round J1772, but it's not clear). Where's it from? Are there other images, or any tests or ratings?