No announcement yet.

My Ludi V2 X2

  • Filter
  • Time
  • Show
Clear All
new posts

    Went for a ride with the wife - we have a pretty nice park and lots of greenways around, with mixtures of cycle paths, single-track and double-track.
    We got out a bit late and it was warm out but had poured overnight and was kind of dreary, so we wound up not doing the full route I'd planned (~20 miles).
    Instead, we did a loop around a lake we'd never done before, plotting a best guess route in Komoot and were going to start with that.

    When we're loading stuff into the car or getting ready to go on a trip, I like to do a little 'pre-flight' to check off making sure we have the 'most important things' - e.g. tickets, passports, whatever. > 10 years later, my wife seems to love to talk while I'm doing this at times....this time we had everything expected except for one thing - the new phone holder 'armband' I'd picked up to replace the top tube/stem taller bag I'd had on the bike. So, bikes unloaded - check. throw on hydration pack and helmet, check. Put phone with map into holder - uhh, where the F is the holder?

    Ok, guess we're winging it. Threw phone into pack pocket, and when we're doing unknown rides, I try to remember to grab one of my earbuds and throw it in an ear, so at least I'm reminded to take some fork or turn or another. Off we went, all good until about the halfway point, running into a main highway and a bunch of parking lots. Meanwhile of course, the routing app is telling me to 'look at the map'...yeah, no - it's in my pack...

    It was a decent ride, as we found a few park areas we had no clue existed, and then wound up on some single-track, which I was kind of happy about but my wife and her Gazelle - not as much. She's fine on hard-packed and some gravel, but this was pretty narrow, barely a trail, with a good amount of roots and drops. Yeah I know - perfect, right? :D To her credit, she did it on her Gazelle and did well - I'd zip up ahead, have a bit of fun, then wait, or stop just past something she might need to walk through and to make sure she's OK.

    I had made a few suspension adjustments to the bike before heading out - opened up the compression damping more/most of the way, and dialed in a few clicks from open on the rear shock, re-checked/set air pressures, etc. I need to get on one of our usual rides to see how it feels there, as it was a bit 'chattery' over hardpack with mixes of gravel and rocks, but it felt pretty good today, and I got a little bit of air doing a few small jumps and drops.

    I had wanted to try to datalog the ride, as my controller has BT issues and will need to be swapped out, but the new phone has marginally better range, so was hoping it might stay connected for at least a little while, but all I got was a log when holding the phone next to the controller...which in a way is OK, as I wanted to at least see what values are being logged for now..

    We got lost somewhere on the trails and came to a fork. I was going to go zip ahead to sort which way we should go when an older guy on a Trek ebike came up. Nice guy - chatted a bit, and apparently he and his girlfriend had their acoustic MTBs stolen when traveling (left on the rack outside overnight) and wound up picking up an eBike. He asked about the Luna and pointed us in the right direction, so off we went and made it back after a couple of miles. Did another shorter random ride through the woods and called it a day - maybe 11 miles or so total, not as far as I'd planned, but a good ride and was still a couple of hours by the time we were heading out.

    On the plus side - the ride was uneventful bike-wise. This is exactly what I'd like - nothing busted, everything working well (other than bluetooth..). The fenders kept the water and crap off of me and the suspension pivot in the rear. Got my wife onto some pretty fun single-track, and the suspension is closer to being dialed in for me.

    Oh - majority of the ride was in PAS 2 of 9, Trail mode. I still want to play with a gear (or better, brake sensor) but generally don't feel it's needed as long as not driving by throttle, which I pretty much ignore for the most part for my use...


      Troubleshooting Bluetooth and App Issues
      So I've had all kinds of 'fun' on this one to date.
      I have worked with embedded systems, including currently, and did a lot of aftermarket automotive ECU tuning for a while, so I've been psyched for the LudiV2. I was a software engineer for a long while and in general, love open source and was working with Linux since before most knew it existed, but - I really don't like Android. Tried it a few times over time, and I 'should' love it, but - just don't.

      But - I needed an Android phone for the app. Those of you searching for a new/used Android phone that's reasonably priced know the mess of the Android ecosystem - it's great in that there's a lot of choice and price points, but it's also kind of a mess to decipher and compare phone specs when looking for 'good enough.' My first attempt was a refurbished Samsung A02 - which I figured at least was a 2021 phone model if lower to mid end, had 3GB of RAM - seemed OK.

      When I got it, the first thing I did besides update it, was to install the Luna app:
      (NOTE: Manual link is here in first post; always check it to see if there's an updated app link and for general info and use! )

      Except well - it wouldn't install. WTH? Android 11, 2021 phone with 'ok-ish' specs if not 'good or great'... Initially, I thought it might be an issue coming from an untrusted/unsigned source, so I grabbed an apk installed (android package installer) and gave it permissions, but again, no go.

      We had some thoughts that maybe it was due to RAM, and when I checked my phone, saw the seller had sent me a 2GB phone, and the A02 was well, kind of a slug/slow, so I ordered a moto power warehouse deal for ~$140 ( ) - which at least had touch and face id, unlike the A02.

      Some back and forth with Marcos, and I installed Android Studio and enabled phone developer mode so I could pull logs. No, this isn't something anyone should need to do, but good logs can be pretty useful for debugging/troubleshooting and well, why not?

      Marcos got to the root cause pretty quickly and spun a beta build - the issue is that some phones, even though they have 64 bit processors, don't run Android 64 bit, or don't have all 64 bit libraries, and the normal build is 64 bit (which would be expected for modern systems today..). Beta build is here, but everyone should check the LudiV2 thread and docs to make sure there isn't a newer build:

      So yay, it installed (on the A02, while waiting for the moto power..)! Ok, but - it didn't 'see' the controller (will display as VESC-<something> in app / Scan ). Damnit.
      Eventually I moved a pedal to be right next to the controller and lo and behold - it saw it. (Note- power to the bike must be on). However, I couldn't move the phone more than 12 inches in any direction before it would disconnect. I knew the controller was working and doing it's job as the bike was ride-able and solid, but no BT = lack of the use of the app and easy way to make adjustments, unable to datalog, etc.

      One of the general benefits of bluetooth is it's low energy consumption (relative to e.g. wifi), letting us use mice, keyboards and headsets for relatively long periods of time. There's yet another spec, BLE, or Bluetooth Low Energy, which is intended to allow devices to run for months or years on a small button battery cell. I don't know for certain but suspect mice and keyboards use BLE, as does the LudiV2 controller. The spec claims to have similar range as 'normal' BT, but the reality is every BT device is different, other electronics can impact range considerably, etc... I am told that 'normal' range of the V2 BLE is ~6 to 8 feet versus the ~8 inches I was getting.

      There's not too much to the BT system (physically) - there's a chip on the board somewhere, a plug on the board for the antenna (small gauge covered wire), which then feeds outside the controller via a rubber grommet. The reality of semi-largescale production, shipping, etc. all means - stuff can happen. So first stop, checking the external antenna is in fact there - yep, there it is! (Look at the bottom of the chain, then up to the controller inside one of the slots..)
      Click image for larger version

Name:	BT-Antenna-external.jpg
Views:	1054
Size:	233.9 KB
ID:	145682

      Next step - making sure the other end of the connector is attached to the board. If it's not, it's possible to get a connection at very short range, so - seemed plausible.

      All you gotta do - is remove the controller, or at least pull it partially. Oh wait - some stuff is in the way.

      I'm sure Luna can do this from start to finish inside of 15 minutes or so. I suspect pulling the motor might be the quickest way, but this is what I did anyways.

      Pull the drive-side crank arm.
      Lock the rear mech to get some chain slack and pull the chain off the chainring.
      Now, I know you 'could' in theory leave the chainring on, but unless you have a 90* bent torx bit, even rotating the chainring around, you won't sit clean/square on 2 of the 4 screws holding the controller in, so yeah - remove the chainring, noting there are inserts on the backside of each of the 4 screws.

      Getting the chainring past the spider is a bit fiddly, but basically - think of the spider as the letter X, and move the gaps on the inner side of the chainring to line up and go over the two bottom 'legs' of the spider. It's a bit fiddly, but it'll come off easily once you find the right spot.

      You can now pretty easily get to all 4 of the torx screws holding the controller in place.

      At this point, it looks something like this:
      Click image for larger version

Name:	RemovingController copy.jpg
Views:	965
Size:	276.1 KB
ID:	145683

      NOTE: Do NOT pull in the controller! Yeah, it's worth repeating - do not pull on the controller! The cabling inside has limited reach, and you really don't want to be having to repair wiring harnesses. There is also a gasket between the controller and motor - if the controller isn't lifting off, do not pry with a screwdriver or anything narrow. You can try a wide-blade putty knife or a small pick - you want to make sure you're not putting narrow pressure on the carbon fiber frame and aren't screwing up the gasket. Once it's loose, it'll lift outwards easily, noting the harness will only allow it to come out so far...

      Here's a pic to give you an idea why I went ahead and removed the chainring - there just isn't much room. It can probably be removed without removing the chainring, but it's not a lot of effort to just remove it.
      Click image for larger version

Name:	ControllerNotMuchRoom copy.jpg
Views:	944
Size:	112.4 KB
ID:	145685

      For a controller replacement, you'd be disconnecting the trio of white harnesses to the right, the main power and phase wire plugs.
      In my case, I just needed to sort if the antenna was connected at this point...and...
      Click image for larger version

Name:	MyAntennaConnectionX2-LudiController.jpg
Views:	870
Size:	196.9 KB
ID:	145686
      The good news - antenna is connected to the board (see gold connector to board on grey wire - that's it). The not-so-good news is there's a pretty nasty pinch in the wire right at the board edge, which is probably the source of my connectivity issues. :(

      You can also see the white wiring harness plugs to the right, noting they have locking connections, so don't tug on them if messing with this or you may become sad and have fun repairing a harness..

      So - need to sort with Luna how to get a replacement motor and controller or get them to send me a controller to swap out.... not my favorite discovery on the bike, but stuff like this does/can happen and I'm sure they'll make it right...
      Attached Files


        Pairing - or why not to maybe not do it (IMO)
        When you launch the phone app and turn on the power to the bike, you can scan and connect to the controller with a single device at a time. Have 2 phones, no problem, just make sure you disconnect with the first before connecting the second. This is reasonable, but wait - what about this 'pair' option?

        Just like with earbuds and other devices, you can pair a device with the controller. However, once you do this - you can not scan or connect from any other device through the normal connect process...unless you manually add a <quite long> device ID/UUID/string into the <unpaired device>.

        This is all a nice 'security' feature, as otherwise, for example - you could bring up your Luna phone app, scan and connect to your friend's bike (assuming he's not connected already, so hint - do it before the ride..hypothetically and only as an example, of course.. ;) ), set the bike in street legal, and move all sliders to the left, or for more fun, move only one or two sliders to the left, then watch him/her jump on wondering wtf is 'wrong' with their bike. Bonus points if you keep your phone connected so they they can't even connect to it...but all fun aside, do not for the love of God - don't pair to their bike, or it's a huge PITA.

        So when I was initially trying to keep the crap A02 phone connected to the LudiV2, I went ahead and paired it, because constantly going through the whole scan/connect while bent over holding the phone on the pedal - was just annoying, so was hoping it would auto-reconnect etc.

        When I got the 'better' moto phone, I remembered this, so unpaired from the old phone. Well - sad for me, apparently it didn't really unpair. It's possible the connection flakiness interrupted a final message exchange with the controller, and marcos is looking into if there's a bug in there somewhere, but the net result was that my old phone/app said it was unpaired - but now neither of my phones could connect to the controller.

        Yeah, this kind of sucked. But of course, there's a way to reset. Unfortunately it's not as simple as e.g. your parent's or your router and other devices. You need the desktop VESC-Tool app at this point (wondering if maybe this should/could be a keypress combo or option sent to the Bafang display in the future?), and - you'll need to connect to the USB port on the controller with a micro-USB cable. You can just barely make out the USB micro connector in the prior pic I posted - it's just above the uppermost white connector plug, and it's not in a great location to try to do when still connected to the wiring harness, as it stands straight up like the other board connectors, versus being flat-mounted flat of the big red power cable, or to the left of the screw on the right - either of those positions would let you remove the controller screws, just move it away from the motor a half inch and be able to connect. Note - there's lots of fun stuff when doing PCB layout, including considerations of adding or being near EMF from other board components, components on the other side of the board, length of traces for some signals/components, there may be reasons, just saying a flat mount in one of those two locations would be easier for users, etc.

        Marcos had sent a better pic and I added some text to it, but you can see the USB connector and orientation here, along with the BT antenna connector and how it should be routed, etc.
        Click image for larger version

Name:	LudiV2Connectors.png
Views:	998
Size:	539.3 KB
ID:	145692
        In reality, you can manage to get the USB micro connected without pulling the controller harnesses and fully disconnecting from the motor, but - I'm not sure it's actually any easier vs pulling the controller entirely..just be careful of the harness and unplug properly.

        In my case, I'm mostly on Mac or Linux but have Windows VMs available if I really need one (for anyone with Mac only, look at Parallels or VMWare Fusion, or OpenBox to run Windows in a virtual machine on a Mac... not sure how well they work/if they yet support ARM M2 chips/APple's latest or not). Desktop VESC Tool downloads are here for Windows and Linux: (and are noted in the Luna LudV2 docs linked to in the LudiV2 thread here: ).

        There technically is a MacOS build, not yet merged into mainline builds, but at least as of right now - is up to date with main.. the Luna manual says no IOS or Mac version due to 'Apple doesn't allow open source licenses on their App Store.' This isn't entirely correct, but there are nuances in licensing, and most software today is leveraging and linking to multiple other pieces of code/libraries, some of which may have 'problematic' specific licensing attached to them. Poking a little bit further, seems like the MacOS builds run stable and in general, there's more of a license issue to address than large code changes needed, etc. MacOS builds are here:

        Note there has been some discussion in the VESC community around changing some of the 'problem licenses' to make the entirely of VESC 'Apple license requirements compliant' effectively, which would be great news as it opens up a future path for an IOS app down the line.

        The Mac version of VESC Tool ran fine on my Mac. So where's the 'danger'? Well - you'll notice the LudiV2 docs really only cover log analysis, which actually is pretty awesome as you can see power output, location, battery use and a bunch of other data, but the desktop app can do a lot of things, including settings very likely able to smoke your motor. To state the obvious, I would not expect Luna to warrantee cooking a motor by plugging random values into VESC... so don't do it.

        Oh - the micro-USB will power the board, at least to the point needed to talk to the microcontroller, flash memory, etc.

        There's a relationship in there somewhere I don't quite 'get' at this point between VESC Tool and firmware used on a given motor. I'm assuming VESC Tool reads the firmware file and uses it to show or hide some specific settings or options, but I'm not yet clear on this relationship.. and there seems to be some added danger or potential for problems if the VESC Tool, which I believe does have some firmware versions embedded in it, not being in sync with the firmware being run on your particular motor. Actually I can see the 'included' or 'aware of' firmware versions in VESC:

        Click image for larger version

Name:	VESC-FirmwareList.jpg
Views:	941
Size:	141.0 KB
ID:	145693

        These are other VESC-based controllers...note none of them say 'Luna' on them...

        Connecting is easy - just make sure to select the right tab up top (USB Serial for micro-USB connection, or BLE if you're not in this situation where can't connect over BT...)

        In my case, I had to reset the controller to effectively see itself as being unpaired, so I could connect to it normally again from the new phone. I suspect this would work ok as it's writing a single attribute for Paired to set to False, but the 'safe' path was to use a LudiV2 firmware and basically re-flash the controller. Once this completes, there's a warning about ensuring you remain connected for at least 10 seconds post-firmware flashing. All things considered, I left it connected for a minute or two before hitting the disconnect.. ;)

        Put the bike back together, put the battery back in the bike, and powered up the bike. And - Error 08. After freaking out for a few seconds, I was sure it was due to the numerous gyrations I had the bike in after deciding I was going to pull the chainring, and the magnet and it's sensor got out of sync, and lo and behold from the LudiV2 doc:
        Click image for larger version

Name:	ErrorCodesSnippet.jpg
Views:	936
Size:	87.2 KB
ID:	145694

        This is where on a non-Ludi/OE controller, you'd need the BESST (it really is NOT the best..) tool to re-syncronize your motor, which basically spins the motor back and forward to calculate a reference point for the crank using the magnet. Thankfully, you can do this directly from the phone app or VESC, so I went ahead and scanned from mobile app (had disconnected the mac from USB before putting back together), saw the controller again (yay!), lifted the rear of the bike, and re-synced the motor - I believe it was under Bike Config once connected with the app. This records the 'offset' which I expect is a relationship of two signals, although unsure which (assuming something like crank/motor position and magnetic force..or something), then wrote the configuration back to the bike, power cycled the bike, and we were back in business.

        Sadly, that means still no usable bluetooth for me. The new phone does get better BT range, and I thought it might even reach the top tube where I mount the phone, but it's not reliable, so pending controller or motor/controller swap. But - the next time should go quicker. :)

        I was able to take a quick datalog, not of a real ride, but I wanted to see what values were logged - there's quite a few of them. There are a few additions I'd like to see, but that's for a different time..

        The Luna controller doc walks you through selecting a log directory for datalogging (if you have an SD card added, I'd suggest using it..just general practice), and enabling data logging. I believe you need to re-enable this setting each power cycle or app launch/reconnection to the controller. After the ride, you can mail yourself the CSV file and either open it in Xcel for grins, or more useful, pull it into the VESC app...

        Open VESC, select Log analysis on the right hand side, select Open CSV on the bottom, select your datalog CSV file, and there you go..
        I don't have enough data from a real run due to the connectivity issues, but this is cool. It logs time, motor and battery output/levels, and location, among other things. I believe it also is recording altitude, which if correct - is great, as you could do some cool analysis of power used climbing your steepest hills of the ride, for example. Neat stuff, more to come once I can connect reliably, etc.

        Click image for larger version

Name:	VESCDataLogIntro.jpg
Views:	920
Size:	162.5 KB
ID:	145695


          Curious on the BT... I see where the coax wire attaches to the controller, loops around and eventually ends up outside the motor housing. But then it just appears to stop (your pic in post #32)?

          Typically, the coax - which is really more of an 'antenna lead' - would be terminated with an actual 'antenna' (pic attached). But nothing like this was ever attached to your wire lead? Guess it might be possible to strip some of the outer shield from the coax and make a rudimentary antenna, but if the coax is just poked through the housing, I'd expect that to definitely have a weak signal.

          Click image for larger version

Name:	antenna termination.jpg
Views:	916
Size:	21.8 KB
ID:	145697


            Originally posted by K442 View Post
            Curious on the BT... I see where the coax wire attaches to the controller, loops around and eventually ends up outside the motor housing. But then it just appears to stop (your pic in post #32)?

            Typically, the coax - which is really more of an 'antenna lead' - would be terminated with an actual 'antenna' (pic attached). But nothing like this was ever attached to your wire lead? Guess it might be possible to strip some of the outer shield from the coax and make a rudimentary antenna, but if the coax is just poked through the housing, I'd expect that to definitely have a weak signal.

            Click image for larger version

Name:	antenna termination.jpg
Views:	916
Size:	21.8 KB
ID:	145697
            marcos can likely elaborate but note the pic at the start of 32 - it’s not the grey cable externally where it goes through the controller housing and grommet, and I haven’t taken apart the backside. It’s possible the grey cable connects on the flip side of the controller and the external grommet and wire are more appropriate/as expected. One of the pics is from Marcos, where he’s mostly working on the dev side of things and also likely usually connected via serial/USB - maybe that pic was confusing the picture?



              There's a relationship in there somewhere I don't quite 'get' at this point between VESC Tool and firmware used on a given motor. I'm assuming VESC Tool reads the firmware file and uses it to show or hide some specific settings or options
              Short story is that VESC Tool version must be compatible with your firmware version.

              Long story... its easy when you are running stable code, but we have been using he development branch and the communication packets change constantly during development. In particular this structure:
              So if the structure changes in the firmware but not in VESC Tool, the write will likely get messed up. This is why there is a hash to ensure that both ends of the packet definition are matching and it screams at you when they dont.
              This applies for motor configuration and app configuration. Firmware update packets have been stable for many years so you can always upload a new firmware using mismatching versions.

              Typically, the coax - which is really more of an 'antenna lead' - would be terminated with an actual 'antenna' (pic attached).
              The v2's use a whip antenna, or 1/4 wavelength antenna. Its the same style used in wifi routers and worked well with the BBSHD ludi v2. However in the M600 the antenna is too close to the metal housing so we got some mismatching there, we actually struggled to get it to reach the handlebar as my plan was to have the antenna fully encosed but we had to send it out.

              However the reports of near zero range are more likely a damaged coax cable during assembly. One cool thing of a whip antenna is that if you pinch it you can cut the antenna at the pinch and peel off the shield so the antenna is exposed again, about 27mm long and works the same. Not a concern right now as luna will get these fixed as warranty.

              Kudos for rtp documenting his experience! He helped a lot reporting the 64bit issue and with general bluetooth debugging.


                Originally posted by marcos View Post

                Short story is that VESC Tool version must be compatible with your firmware version.

                Long story... its easy when you are running stable code, but we have been using he development branch and the communication packets change constantly during development. In particular this structure:
                So if the structure changes in the firmware but not in VESC Tool, the write will likely get messed up. This is why there is a hash to ensure that both ends of the packet definition are matching and it screams at you when they dont.
                This applies for motor configuration and app configuration. Firmware update packets have been stable for many years so you can always upload a new firmware using mismatching versions.
                That's quite the struct linked to (lots of elements in it), probably half of which are familiar from the raw datalog csv.
                If I take a VESC Desktop Tool build, e.g. the MacOS one for example, import and load the M600 Luna firmware, is the VESC Tool app parsing the config so is then 'safe' for read/write operations, or only for uploading firmware and log analysis?


                • marcos
                  marcos commented
                  Editing a comment
                  Um, no. The desktop software doesn't pull the struct definition from the firmware. The definitions on both software and firmware have to match, its usually a copypaste from the firmware .h to the vesc tool .h

                  When the definitions don't match and you somehow fooled the hash check what usually happens is that the basic limits are copied ok because they are at the beggining of the struct, and new stuff is added at the end of the struct, so only the fields after the new struct member are messed up.

                  If you build today's vesc tool, it should be used with today's firmware code (and today's firmware in vesc public repo doesn't support the M600, but we'll make it converge soon and its easy to patch up anyways)

                • marcos
                  marcos commented
                  Editing a comment
                  So yes its only safe for uploding firmware and log analysis. If its not safe (hash doesn't match) it will scream at you when you connect the controller.

                  This is the hash (I forgot its actually called "signature") that changes every time the structure definition changes:
                  The VESC motor control firmware. Contribute to vedderb/bldc development by creating an account on GitHub.

                • rtp
                  rtp commented
                  Editing a comment
                  Got it, thanks.
                  Lots of code today is dynamically driven from various configuration so wanted to make sure. Also makes sense why the build listed a good # of (non-Luna) device firmware - presumably all in main repo or configured to include in the build.

                  Firmware uploads and log analysis only it is, at least for now.
                  Worst case I can run the Windows build in a VM.

                After a few 10-20m rides, I think I gave the Volt 135mm saddle a fair shake, and at least for me - it's gotta go. It's not terrible, and probably reasonable for some of the smaller riders or those standing a majority of the time, but I can still feel it days later, so saddle shopping we go.

                This is a huge PITA if you don't already have a saddle of choice - I've got a Cloud9 with springs on my BBHSD fat tire bike, and not really interested in bringing that over.
                Meanwhile the WTB grips coming on the X2 aren't bad IMO, but I got used to running GA3s.

                Hours reading about 'sit bone distance,' doing calculators (WTB, Ergon), and reading seat reviews, but reality is everyone's butt and how they ride will have some differences. WTB Speed, WTB Comfort, Kida and Deva were all in the short list in either Medium or Wide saddle widths. Went down the Ergon rabbit hole as well for a bit, to eventually be willing to give the SM E-Mountain Core Prime seat a try in M/L (only two sizes, S/M and W/L) to find - out of stock everywhere.

                Did a trip to REI as one of the few places that might have a range of saddles - the first one was a wash, but the second one was bigger and at least hand a bunch of Bontrager and WTB saddles.. and a collection of more Ergon grips...which was convenient as they too come in two sizes, and I was considering giving the GP1 a try...surprisingly at least on the GP1, I liked the small better than the large, at least grabbing it in the store, so picked that up - a bit more than e.g. Amazon, but close enough. Will see how they feel on the next trail ride, probably over the weekend, and if they get in the way, will pick up a pair of GA3s.

                On the seat, I went ahead and ordered an Ergon SMC Core saddle... but was apparently tired when ordering (overseas no less), so I now have the S/M en-route. Guess will give it a try as I doubt it's worth trying to send back overseas, and either keep it or sell it locally and buy the wider saddle in the same model or wait for the E-Mountain Core Prime....or something else. Kind of pissed, as I checked the sizes (only two available) serveral times to compare to other must have reloaded before I hit the order button. Will see how that goes, and if it fits or not, will be interesting as the 'core' kind of has a foam layer between two shells, so there is some level of movement in the saddle - TBD on if it works for me or not.


                  Wheels, Tires and Tubeless Milk

                  With a combination of knowledge from El34's great X1 thread here(everyone should read his thread IMO) - and his comments about the Alex MD35 wheelset being 'rather heavy,' plus well - I like to work on most of my stuff until I get to 'it's now right for me,' as well as originally assuming I'd be doing a DIY from frame and parts ... I had looked into various wheel options ranging from China wheels to custom builds to 'screw this, it's not that hard - DIY' and everywhere in between. I looked at various hubs, and prices, and came down to DT Swiss DT350s as more or less bullet-proof, to the point they now make a DT350 'hybrid' specifically for e-bikes, and not too bad price-wise.

                  This led to more of build vs buy, and just when I thought I'd be having a set custom built, I wound up with an eBay score - picked up a set of Raceface ARC 40(inner width) with DT350 hubs F/R. They've got some 'spare parts' on them I don't really want or need - brake rotors for the spares pile, and sadly they were set up for SRAM XD, but it's an easy enough swap to Shimano HG freehub...once you sort the parts.

                  I'll do the conversion probably tomorrow after Xmas festivities, but knew I wanted to give tubeless a try - I'd considered it a number of times on my motorcycles but always ran HD tubes with a spare and tool why not give it a try?

                  I also do some mixed road in with trail riding, so why not build up a full second wheelset, or at least wheels and tires and rotors (still debating on eventual drivetrain change so no more $ into that one for a bit until I start wearing it and decide..). I've run knobbies on my dual-sport bikes, at speed, so not gonna lie and say the 'knobby hum' really bothered me much on the X2, but asphalt also tears the heck out of off-road tires, so might as well save 'em as the Maxxis are pretty good tires off-road. I had found a decent compromise tire for my 650cc heavy dual-sport motorcycle but finding one for an eMTB wasn't nearly so simple. I got recommendations for 'super moto-x' which basically look like nothing I'd ever take off-road, so just dug in and did my own homework.

                  The best-seeming candidates were the Schwalbe Marathon Plus MTB, and maybe one or two Continental or Kendas, some of which I couldn't get in the size I wanted, then I came across the Schwalbe Johnny Watts. From the look of the tread and the relatively little feedback I could find on it, this is probably as close as I'm going to get in a 'dual sport' on/off-road tire. I'm not sure it's specifically tubeless 'rated,' but well - guess we'll see.

                  I found a nice coupon at Jenson at snagged a set shipped for like $90 - not too bad.

                  I idd a crash course on tubeless. Interesting in that the 'milk' is basically a latex solution. I did my deep dive into that stuff 5 years back when we switched our mattress over to it (latex mattresses are pretty damned good), and while I guess it's possible, I've got a pretty strong feeling the majority of 'super duper tubeless special sauce' is all pretty close to each other. Either way, I went with 'Truckers Cream II' at @JRA's recommendation. Nice in that it arrived with a busted syringe - had emailed them on Amazon and got no response, but a week-ish later, two replacement syringes showed up in my mailbox. Kudos to them.

                  The wheels already had rim tape on them for tubeless but in the sake of saying 'screw it,' I went ahead and removed it, used a microfiber rag with some isopropyl alcohol to clean up the inside of the rim, then went to town. Anyone doing this for the first time - it's easy. All you're really doing is taping off the spoke holes, mounting the tire, then letting the latest find and fill any holes. Of course, we'll see how well my first ones hold, but - it's not rocket science.

                  I couldn't find any wider tape easily for my i40 rims, so went with Muck-off 35mm tape. My wife saw it and thought it was for wrapping Xmas presents - I'm sooo glad I caught her before she decorated wrapping paper with it or something. :)

                  As I'm going for a black/red theme, I picked up some 40mm red presto valves from Amazon - basically some random China brand, MusQI or something, but they seemed OK. They actually came with some silicon pads to help seal the valve to the rim and a valve remover and some extra caps and o-rings..will see how they hold up.
                  Click image for larger version

Name:	TubelessParts.jpg
Views:	925
Size:	387.0 KB
ID:	145834 Click image for larger version

Name:	TubelessValveExtras.jpg
Views:	889
Size:	299.2 KB
ID:	145838 Click image for larger version

Name:	Tires-JohnnyWatts-27-5x2-8.jpg
Views:	863
Size:	144.6 KB
ID:	145837

                  While I was cleaning the rims, I opened up the tires fully and let them sit in the sun, not knowing just how loose or tight they may be on my wheels...the sun will help them loosen up slightly as well as help them be in their 'natural' round form, etc.

                  No pics of taping the rims, but there are videos out there. I started ~7-8" 'before' the valve stem hole, wrapped it while holding tight and running my thumb down the center of the tape, and went ~7" or so past the other side of the valve stem hole. I went over it a few times to burp any bubbles mostly to the spoke holes, ran pressure around again on the center then on each side, then put the tire on.

                  The first tire went onto the rim without a hitch...I couldn't find a spare spray bottle so mixed some soap and water and used a wheel brush to soap the outside of the tire/rim joint. I used a presta->Shrader valve adapter to hit the tires with some pressure and it 'popped' into the bead. Easier than doing motorcycle tires - the first one I did fully by hand without levers.

                  The second one was a bit tighter-seeming, but I realize what I'd done - I had pushed the 'inside' tire to the bead of the rim on the outside before getting the 'outer'/other side of the tire past the bead. Pulling the opposite side of the tire to the center of the rim (the centers slop down a bit) gave me enough room/slack and that one was on as well.

                  I intentionally seated the beads without putting any 'milk'/sealant in the tires - wanted to make sure they had a chance of sealing up before potentially making a mess with the milk.

                  Both tires well-seated, I guessed a bit on the amount of mile/sealant to use - Truckers said 100ml, others say up to 200ml for 2.8" tires, so I think I went with ~140ml or so to start.

                  After adding the milk through the valve with the core removed, popped the core in, pressurized to ~max pressure (~40PSI for these), put the valve cap on, swished the tire around on each side, then set down.

                  We'll see tomorrow if they're holding air, but so far seeming ok.

                  Click image for larger version

Name:	TiresSoapedAndPressurized.jpg
Views:	879
Size:	341.8 KB
ID:	145835
                  Click image for larger version

Name:	WheelsDoneNowOvernight.jpg
Views:	877
Size:	204.7 KB
ID:	145836



                    Just had my first opportunity to try out my new X2 Ludi V2 … Love it … I did notice, however, that the “seat of the pants” field weakening isn’t as obvious as on my BBSHD Ludi V2. Specifically, the range of throttle RPM per gear is flatter (if that makes sense). Also noticed extremely limited Bluetooth range on my bike, as well as my brother’s bike. … will spend more time on it to give better feedback, but aside from some minor issues that I assume are learning curve related, I am pleased over the improvements over my X1 Ludi V1.


                    • marcos
                      marcos commented
                      Editing a comment
                      yeah, the bbshd does 25+Amps of field weakening and the M600 is doing about 7Amps of FW. Time will tell if the motor can handle a bit more FW. And yes the BT range is not as good as the bbshd...
                      Merry Christmas!

                    • StvMan
                      StvMan commented
                      Editing a comment
                      Marcos, Eric mentioned the app will have a slider for the field weakening … will it go beyond the original 7 amps of FW?

                    We had a good Xmas, and I checked on the tires after exchanging gifts and waking up a bit...
                    The good news - no problem, both tires happily holding air... so I went to swap them.
                    The front went on painlessly, so on to the rear.

                    I had picked up a DT Swiss 'Hybrid' driver which has a steel hub.
                    Click image for larger version  Name:	DTSwissHybridHubHG.jpg Views:	12 Size:	194.8 KB ID:	145846
                    Removing the XD cassette - note once it's broken loose, you can leave the cassette nut on and pull the whole cassette and driver off the hub.
                    Click image for larger version  Name:	XDCassetteRemoval.jpg Views:	11 Size:	355.3 KB ID:	145848
                    And removed - the spacer is normally sitting lower, with a spring under the pair of ratcheting gears..
                    Click image for larger version  Name:	XDCassetteRemoved.jpg Views:	11 Size:	181.9 KB ID:	145847

                    Looks like someone greased it but not with DT red 'special' grease. I went ahead and cleaned and greased it up, put the HG driver on, and gave it a test in both directions.
                    WTF - no freewheel / freespin.
                    The hub should freespin and click/buzz in one direction, and lock in the other. Well, not this one..
                    This was not making my Christmas a merry one..... especially as it took a while to locate the HG driver in stock anywhere...
                    DT Swiss's site is pretty awesome - if you know exactly what you're looking for AND have a specific year/model # from your hubs - which I didn't.

                    There's not much to the hubs - spacer, springs, and the ratchets are identical to each other. I threw the XS driver back on and - locks one way, spins the other. WTF?
                    Pulled the ratchets out and I'm sure I figured out what's going on here, but not necessarily what I need to fix it parts-wise just yet.
                    The XD driver is slightly shallower than the HG driver, which lets the outboard ratchet be fully encased by the driver body, and mating to the inboard ratchet, but the inboard ratchet can't slide into the XD freehub/driver...but the HG driver is slightlydeeper, which lets the inboard ratchet just barely lock up into the HG body, thus - locked in both directions.

                    I did notice there was no outboard spring when I pulled the hub apart - might be year dependent, but I bet there's supposed to be a 1-2mm shim or shim + spring in the HG freehub. I've seen both on various parts diagrams - just need to figure out right part number for my 'magical unknown year DT350 hub' + Hybrid driver combo...

                    So that was kind of a bummer...will have to do some parts hunting... so went ahead and swapped rotors to my red Hope floating rotor in the rear, thinking I'd probably need to do some filing there.
                    Two things of interest:
                    1. There is apparently a small washer on the non-drive side of the rear axle. It must have slid off the axle as I removed it and nearly missed it. One side is very slightly serrated. I had thought in looking at the frame that this sat on the inboard side of the swingers, but in asking a few others - seems to go on the outside, presumably serrations facing outwards to the axle lever handles.
                    2. I didn't have to touch a thing in the rear for the floating rotor - I had to file a bit on the front caliper at the mount to clear the floating rotor 'rivets' but - all good in the rear.

                    So ended the day with 2 floating rotors, but only one new wheel. Meh. Will go sort DT350 parts and hopefully have sorted for next week sometime..
                    Click image for larger version  Name:	HopeDiscsOneRacefaceArc.jpg Views:	10 Size:	335.5 KB ID:	145849
                    Last edited by rtp; 12-26-2021, 05:45 AM.


                      Misc Stuff
                      We've gotten caught coming back past dark in trails and roads before, so picked up 'the best of the mid-range cheap headlights' to see what I think. They all claim excessive lumens which aren't possible to reach given their power sources, but I needed something and preferred simple for now - no battery pack, easy on and easy off.

                      They claim something nuts like 4000 lumens (doubt it), but it checked the boxes - has an internal 18650 so I can always replace it easily if needed, simple enough controls (on - high - med - low - strobe - sos), it can be removed easily, and has a good # of solid reviews. For $25, I'm in! It's a 'Victagen 2022 bike headlight). Oh yeah, and it's calming weatherproof and usable as a power bank. We'll see..

                      For the price, I'm kind of impressed. 3 LEDs, the mount comes with a rubber insert I just removed, and the mount is simple to pop the light in and out of.

                      Click image for larger version

Name:	HeadlightInstalled.jpg
Views:	906
Size:	246.7 KB
ID:	145851

                      I had also picked up the Ergon GP1 grips you can kinda see in the pics, but 'Santa' (ok, me, and putting a label on 'from my wife to me' ;) ) brought me a Granite Tire Patch end bar kit, and some anodized bar end inserts b/c I can't stand the cheesy plastic Ergon on those went as well:
                      Click image for larger version

Name:	GraniteTirePatchBarEndDetails.jpg
Views:	837
Size:	204.6 KB
ID:	145853 Click image for larger version

Name:	GraniteTirePatchBarEndInstalled.jpg
Views:	864
Size:	117.7 KB
ID:	145852
                      Click image for larger version

Name:	BarEndsBoxed.jpg
Views:	849
Size:	123.9 KB
ID:	145855 Click image for larger version

Name:	BarEndCloseup.jpg
Views:	851
Size:	133.3 KB
ID:	145854
                      Click image for larger version

Name:	BarEndInstalled.jpg
Views:	839
Size:	123.0 KB
ID:	145857

                      Went ahead and cleaned and lubed the chain then went for a ride - had planned on going to the park and some trails, but it got later than expected so a random 12 mile road trip with the wife. Funny with the Johnny Watts up front but the Maxxis in rear at the moment... the knobby 'hum' seems like it's decreased but really a bit tough to tell for sure until I get the rear wheel swapped over.
                      Attached Files


                        It nearly hit 70* today..had some stuff to do in the afternoon but threw together a 16 mile trip around a few lakes with the wife.
                        An uneventful decent ride all around, although my ass is tiring of this seat (replacement coming this week, yay!).
                        The JW front tire definitely reduces the knobby hum on pavement, just remains tough to tell by how much until I can get the rear hub sorted and the rear wheel swapped onto the bike - parts ordered and an email sent off to DT Swiss to confirm all I'm really missing seemingly is the outer spring.

                        The LudiV2 seems to do it's own battery calculations - don't think can show raw voltage on the default display (will have to check if the app does...datalogging certainly should..), but came back with ~81% claimed...majority of the ride in 2 of 9, maybe 1/4 mile in 3 out of ~16 miles.

                        Once I get the rear hub/tire sorted, will probably go ahead and try a couple of chainring sizes. I'm not sure where will wind up on this and do go back and forth - trail riding seems to overall average out at 10mph or so with mixed asphalt averaging out maybe 13-15mph, but definitely with some sections of higher speed. Getting the bike to a bit over 20mph is no problem, but haven't really hit a higher speed section towards the end of the ride, to see once tired how overall gearing and power is to reach 25-30mph.

                        Meanwhile, while I do kinda like the 12s setup more than I thought I would, I'm still leaning towards eventual replacement with a 9s or 10s setup. Still thinking on this.

                        Pic from a break in today's ride..


                          Curious about the luda controller for the x2. Luna said they're putting a video together but they probably want it all fancy looking which might take a while. Can you show a video of the configuration process? Really curious how much they've been able to 'unlock' from the m600 and if you can dial in different torque/throttle settings based on individual preferences.


                          • rtp
                            rtp commented
                            Editing a comment
                            The main 'recommended' configuration is via the mobile app, which is kind of understandable as there are a LOT of settings in VESC desktop including comm protocols, I believe temp thresholds, motor direction, etc. I'll get some screenshots as I get and replace my V2 controller (supposed to make it here today...)... what I'm not sure but marcos can probably answer is how tunable the torque response and some of the ramps etc. are from within VESC vs in code.

                            Having BT connectivity issues has pretty much limited my ability to poke at it but a solid run with datalogging enabled should show quite a bit if it's e.g. peak #s you're looking for.

                            More as I get the controller swapped out and some time to play with it..

                          Finally - matching wheels ;)
                          I have a rear hub spring on order - see DT rear hub breakdown below, was missing the outermost spring in the original XD wheel setup, and needed it for the HG/Shimano conversion or it effectively became a locker/fixie wheel.. With the holidays, who knows how long it'll be on shipping misc small spare parts, so decided to roll the dice today and stop in a handful of local bike shops in the hopes that someone, somewhere, might have a DT hub spring I could snag. I was missing the rightmost #10 spring...)

                          Click image for larger version

Name:	DTRearHubDetailedView.jpg
Views:	857
Size:	45.5 KB
ID:	145895

                          A fair # of shops were either closed, or closed for the holidays, but still had a few to try. First up was a single owner run shop with lots of good reviews, but no such luck. Had a couple of others on the list, but the closest one to where we drove to already (yeah, could have called around but also wanted to check out some misc gear including for my wife..) was a Trek shop. I was kind of interested in going there regardless, as they were mentioned as being one of the places having a 'sit bone measurement' system of some kind. Turns out they did, and it's honestly a simplification of the 'spray a piece of paper and sit on it with cardboard underneath, then measure center of each depression to the other' but kind of neat - it's a gel-filled flat slab, and behind it a sliding insert with colors on it - basically lining up from center to center and it shows a 'color' which pretty much maps to sit bone distance as follows:
                          Click image for larger version

Name:	SitBoneBontragerChart.jpg
Views:	864
Size:	145.2 KB
ID:	145898
                          Basically they map to more or less S, M, L and XL within a given range. I used a measurement app on my wife's and it sat center to center at a bit over 4" which is ~110-120mm, while they went with yellow, so I'm assuming their slide chart adds the +20mm to the top for their final recommendation.
                          The left hand side is kind of glare-ridden, but the top two are Race and Performance Road | MTB for the first row, Fitness for the second row, and something like casual/recreational/commute for the bottom row. They do sell some seats 'color-coded' so probably some liberty was taken (note the repeating 165mm and 205mm for the last two rows? Bet they only sell two seat sizes in those styles...) but was neat anyways. I also fell into yellow, but closer to blue than her.

                          I kinda lucked out on the spring as one of their mechanics went 'diving for springs' noting the Trek/Bontrager wheels got it, DT Swiss hubs. I showed him a pic, and he came back with this:
                          Click image for larger version

Name:	DTRearSpringBontragerVariant.jpg
Views:	886
Size:	101.0 KB
ID:	145894
                          Springs for the 240 and 350 are the same, so I'm calling it a win, and here's what the few dollar spring looks like:
                          Click image for larger version

Name:	DTRearSpring.jpg
Views:	863
Size:	241.7 KB
ID:	145901

                          I had brought the wheel with me, so threw it together outside and - success. Spins in one direction and locks in the other, woo hoo!
                          Their shop was pretty decent sized, and had a pretty good selection of stuff - some eBikes, a lot of acoustic bikes, all kinds of gear and apparel, etc.. picked up a spare set of gloves, probably a bit more than online but at least they're local. Almost got some pants for my wife but they didn't have in her size.. I did pick up a random lock, as we may head to the coast for a day or so, and while I am not going to as much as move out of sight of the bikes, I want to at least lock them together, so got a cable lock for now. Really need to sort a better solution there eventually, but will do for right now..

                          Got home and needed to pull the rear wheel, and swap the cassette and my Hope rotor for the new wheel.
                          Confirmed the 'from-Luna' rear cassette is indeed a SRAM PG-1230 - it's stamped on the back. That's a serious set of stacked sprockets! Only the last 3 or 4 are pinned together, and the rest ar stacked with spacers.
                          Click image for larger version

Name:	X2SRAMPG1230Last3Pinned.jpg
Views:	856
Size:	322.9 KB
ID:	145900 Click image for larger version

Name:	X2SRAMPG1230StackOSprockets.jpg
Views:	864
Size:	315.4 KB
ID:	145902

                          Here's what the DT ratchets look like (they're both the same...EXP hubs are different but classic hubs use two of the same...)..36T in this case:
                          Click image for larger version

Name:	DTRatchets36T.jpg
Views:	865
Size:	188.6 KB
ID:	145897

                          And finally - matching wheels, tubeless matching tires, and matching DT350 hubs..
                          Click image for larger version

Name:	X2-MatchingWheelsHubsTires.jpg
Views:	860
Size:	324.2 KB
ID:	145896
                          Attached Files